diff options
Diffstat (limited to 'src/test/java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java | 56 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java | 52 |
2 files changed, 108 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index 6ed2c99103..52a29a24d6 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java @@ -564,6 +564,62 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase { assertNoEvents(); } + private void setupPackagesForSourcesWithSameBaseNameTests() throws Exception { + scratch.file( + "foo/BUILD", + "cc_library(", + " name = 'lib',", + " srcs = ['a.cc', 'subpkg/b.cc', 'subpkg/a.c', '//bar:srcs'],", + ")"); + scratch.file("bar/BUILD", "filegroup(name = 'srcs', srcs = ['a.cpp'])"); + } + + @Test + public void testContainingSourcesWithSameBaseNameWithNewObjPath() throws Exception { + AnalysisMock.get().ccSupport().setup(mockToolsConfig); + useConfiguration("--cpu=k8", "--experimental_shortened_obj_file_path=true"); + setupPackagesForSourcesWithSameBaseNameTests(); + getConfiguredTarget("//foo:lib"); + + Artifact a0 = getBinArtifact("_objs/lib/0/a.pic.o", "//foo:lib"); + Artifact a1 = getBinArtifact("_objs/lib/1/a.pic.o", "//foo:lib"); + Artifact a2 = getBinArtifact("_objs/lib/2/a.pic.o", "//foo:lib"); + Artifact b = getBinArtifact("_objs/lib/b.pic.o", "//foo:lib"); + + assertThat(getGeneratingAction(a0)).isNotNull(); + assertThat(getGeneratingAction(a1)).isNotNull(); + assertThat(getGeneratingAction(a2)).isNotNull(); + assertThat(getGeneratingAction(b)).isNotNull(); + + assertThat(getGeneratingAction(a0).getInputs()).contains(getSourceArtifact("foo/a.cc")); + assertThat(getGeneratingAction(a1).getInputs()).contains(getSourceArtifact("foo/subpkg/a.c")); + assertThat(getGeneratingAction(a2).getInputs()).contains(getSourceArtifact("bar/a.cpp")); + assertThat(getGeneratingAction(b).getInputs()).contains(getSourceArtifact("foo/subpkg/b.cc")); + } + + @Test + public void testContainingSourcesWithSameBaseNameWithLegacyObjPath() throws Exception { + AnalysisMock.get().ccSupport().setup(mockToolsConfig); + useConfiguration("--cpu=k8", "--experimental_shortened_obj_file_path=false"); + setupPackagesForSourcesWithSameBaseNameTests(); + getConfiguredTarget("//foo:lib"); + + Artifact a0 = getBinArtifact("_objs/lib/foo/a.pic.o", "//foo:lib"); + Artifact a1 = getBinArtifact("_objs/lib/foo/subpkg/a.pic.o", "//foo:lib"); + Artifact a2 = getBinArtifact("_objs/lib/bar/a.pic.o", "//foo:lib"); + Artifact b = getBinArtifact("_objs/lib/foo/subpkg/b.pic.o", "//foo:lib"); + + assertThat(getGeneratingAction(a0)).isNotNull(); + assertThat(getGeneratingAction(a1)).isNotNull(); + assertThat(getGeneratingAction(a2)).isNotNull(); + assertThat(getGeneratingAction(b)).isNotNull(); + + assertThat(getGeneratingAction(a0).getInputs()).contains(getSourceArtifact("foo/a.cc")); + assertThat(getGeneratingAction(a1).getInputs()).contains(getSourceArtifact("foo/subpkg/a.c")); + assertThat(getGeneratingAction(a2).getInputs()).contains(getSourceArtifact("bar/a.cpp")); + assertThat(getGeneratingAction(b).getInputs()).contains(getSourceArtifact("foo/subpkg/b.cc")); + } + private void setupPackagesForModuleTests(boolean useHeaderModules) throws Exception { scratch.file("module/BUILD", "package(features = ['header_modules'])", diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java index 8bb93d66f8..8226bc1bc8 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java @@ -123,6 +123,58 @@ public class ObjcLibraryTest extends ObjcRuleTestCase { } @Test + public void testCompilesSourcesWithSameBaseNameWithNewObjPath() throws Exception { + useConfiguration("--experimental_shortened_obj_file_path=true"); + createLibraryTargetWriter("//foo:lib") + .setAndCreateFiles("srcs", "a.m", "pkg1/a.m", "b.m") + .setAndCreateFiles("non_arc_srcs", "pkg2/a.m") + .write(); + + getConfiguredTarget("//foo:lib"); + + Artifact a0 = getBinArtifact("_objs/lib/arc/0/a.o", "//foo:lib"); + Artifact a1 = getBinArtifact("_objs/lib/arc/1/a.o", "//foo:lib"); + Artifact a2 = getBinArtifact("_objs/lib/non_arc/a.o", "//foo:lib"); + Artifact b = getBinArtifact("_objs/lib/arc/b.o", "//foo:lib"); + + assertThat(getGeneratingAction(a0)).isNotNull(); + assertThat(getGeneratingAction(a1)).isNotNull(); + assertThat(getGeneratingAction(a2)).isNotNull(); + assertThat(getGeneratingAction(b)).isNotNull(); + + assertThat(getGeneratingAction(a0).getInputs()).contains(getSourceArtifact("foo/a.m")); + assertThat(getGeneratingAction(a1).getInputs()).contains(getSourceArtifact("foo/pkg1/a.m")); + assertThat(getGeneratingAction(a2).getInputs()).contains(getSourceArtifact("foo/pkg2/a.m")); + assertThat(getGeneratingAction(b).getInputs()).contains(getSourceArtifact("foo/b.m")); + } + + @Test + public void testCompilesSourcesWithSameBaseNameWithLegacyObjPath() throws Exception { + useConfiguration("--experimental_shortened_obj_file_path=false"); + createLibraryTargetWriter("//foo:lib") + .setAndCreateFiles("srcs", "a.m", "pkg1/a.m", "b.m") + .setAndCreateFiles("non_arc_srcs", "pkg2/a.m") + .write(); + + getConfiguredTarget("//foo:lib"); + + Artifact a0 = getBinArtifact("_objs/lib/foo/a.o", "//foo:lib"); + Artifact a1 = getBinArtifact("_objs/lib/foo/pkg1/a.o", "//foo:lib"); + Artifact a2 = getBinArtifact("_objs/lib/foo/pkg2/a.o", "//foo:lib"); + Artifact b = getBinArtifact("_objs/lib/foo/b.o", "//foo:lib"); + + assertThat(getGeneratingAction(a0)).isNotNull(); + assertThat(getGeneratingAction(a1)).isNotNull(); + assertThat(getGeneratingAction(a2)).isNotNull(); + assertThat(getGeneratingAction(b)).isNotNull(); + + assertThat(getGeneratingAction(a0).getInputs()).contains(getSourceArtifact("foo/a.m")); + assertThat(getGeneratingAction(a1).getInputs()).contains(getSourceArtifact("foo/pkg1/a.m")); + assertThat(getGeneratingAction(a2).getInputs()).contains(getSourceArtifact("foo/pkg2/a.m")); + assertThat(getGeneratingAction(b).getInputs()).contains(getSourceArtifact("foo/b.m")); + } + + @Test public void testObjcPlusPlusCompile() throws Exception { useConfiguration( "--cpu=ios_i386", |