aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java56
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java52
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",