Rewrite tests to avoid assuming Linux-specific configuration settings. Especially avoid the expectation that we compile with PIC by default. A follow-up change changes the default target CPU used in the tests to be the host CPU, which would otherwise break the tests. -- MOS_MIGRATED_REVID=132533255
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java index 3beebb6..3093d8d 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java
@@ -133,6 +133,7 @@ // "action conflict detection is incorrect if conflict is in non-top-level configured targets". @Test public void testActionConflictInDependencyImpliesTopLevelTargetFailure() throws Exception { + useConfiguration("--cpu=k8"); scratch.file("conflict/BUILD", "cc_library(name='x', srcs=['foo.cc'])", "cc_binary(name='_objs/x/conflict/foo.pic.o', srcs=['bar.cc'])", @@ -154,9 +155,10 @@ */ @Test public void testNoActionConflictWithInvalidatedTarget() throws Exception { + useConfiguration("--cpu=k8"); scratch.file("conflict/BUILD", "cc_library(name='x', srcs=['foo.cc'])", - "cc_binary(name='_objs/x/conflict/foo.pic.o', srcs=['bar.cc'])"); + "cc_binary(name='_objs/x/conflict/foo.o', srcs=['bar.cc'])"); update("//conflict:x"); ConfiguredTarget conflict = getConfiguredTarget("//conflict:x"); Action oldAction = getGeneratingAction(getBinArtifact("_objs/x/conflict/foo.pic.o", conflict)); @@ -177,6 +179,7 @@ */ @Test public void testActionConflictCausesError() throws Exception { + useConfiguration("--cpu=k8"); scratch.file("conflict/BUILD", "cc_library(name='x', srcs=['foo.cc'])", "cc_binary(name='_objs/x/conflict/foo.pic.o', srcs=['bar.cc'])"); @@ -188,6 +191,7 @@ @Test public void testNoActionConflictErrorAfterClearedAnalysis() throws Exception { + useConfiguration("--cpu=k8"); scratch.file("conflict/BUILD", "cc_library(name='x', srcs=['foo.cc'])", "cc_binary(name='_objs/x/conflict/foo.pic.o', srcs=['bar.cc'])"); @@ -213,6 +217,7 @@ */ @Test public void testConflictingArtifactsErrorWithNoListDetail() throws Exception { + useConfiguration("--cpu=k8"); scratch.file( "conflict/BUILD", "cc_library(name='x', srcs=['foo.cc'])", @@ -234,6 +239,7 @@ */ @Test public void testConflictingArtifactsWithListDetail() throws Exception { + useConfiguration("--cpu=k8"); scratch.file( "conflict/BUILD", "cc_library(name='x', srcs=['foo1.cc', 'foo2.cc', 'foo3.cc', 'foo4.cc', 'foo5.cc'" @@ -265,9 +271,10 @@ */ @Test public void testActionConflictMarksTargetInvalid() throws Exception { + useConfiguration("--cpu=k8"); scratch.file("conflict/BUILD", "cc_library(name='x', srcs=['foo.cc'])", - "cc_binary(name='_objs/x/conflict/foo.pic.o', srcs=['bar.cc'])"); + "cc_binary(name='_objs/x/conflict/foo.o', srcs=['bar.cc'])"); reporter.removeHandler(failFastHandler); // expect errors update(defaultFlags().with(Flag.KEEP_GOING), "//conflict:x", "//conflict:_objs/x/conflict/foo.pic.o");
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java index c5960dd..98455b7 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -856,6 +856,7 @@ */ @Test public void testPostProcessedConfigurableAttributes() throws Exception { + useConfiguration("--cpu=k8"); reporter.removeHandler(failFastHandler); // Expect errors from action conflicts. scratch.file("conflict/BUILD", "config_setting(name = 'a', values = {'test_arg': 'a'})",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java index 3ad2173..5590c64 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -16,7 +16,6 @@ import com.google.common.base.Functions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.io.ByteStreams; import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.config.ConfigurationFactory; @@ -46,8 +45,6 @@ import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; @@ -209,15 +206,6 @@ FileSystemUtils.writeContentAsLatin1(jdkWorkspacePath, ""); } - public static String readFromResources(String filename) { - try (InputStream in = BazelAnalysisMock.class.getClassLoader().getResourceAsStream(filename)) { - return new String(ByteStreams.toByteArray(in), StandardCharsets.UTF_8); - } catch (IOException e) { - // This should never happen. - throw new AssertionError(e); - } - } - @Override public ConfigurationFactory createConfigurationFactory() { return new ConfigurationFactory(new BazelConfigurationCollection(),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java index 1454940..7a70395 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -13,7 +13,6 @@ // limitations under the License. package com.google.devtools.build.lib.rules.cpp; -import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.getOnlyElement; import static com.google.common.truth.Truth.assertThat; import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.baseArtifactNames; @@ -21,7 +20,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Action; @@ -264,7 +262,7 @@ @Test public void testTempsWithDifferentExtensions() throws Exception { - useConfiguration("--save_temps"); + useConfiguration("--cpu=k8", "--save_temps"); scratch.file( "ananas/BUILD", "cc_library(name='ananas',", @@ -282,63 +280,34 @@ @Test public void testTempsForCc() throws Exception { - useConfiguration("--save_temps"); - ConfiguredTarget fooTarget = getConfiguredTarget("//foo:foo"); - List<Artifact> temps = - ImmutableList.copyOf(getOutputGroup(fooTarget, OutputGroupProvider.TEMP_FILES)); - assertThat(temps).hasSize(2); - - // Assert that the two temps are the .i and .s files we expect. - assertThat(filter(temps, fileTypePredicate(CppFileTypes.PIC_PREPROCESSED_CPP))).hasSize(1); - assertThat(filter(temps, fileTypePredicate(CppFileTypes.PIC_ASSEMBLER))).hasSize(1); - } - - @Test - public void testTempsForCcNoPIC() throws Exception { - useConfiguration("--save_temps", "--cpu=piii"); - ConfiguredTarget fooTarget = getConfiguredTarget("//foo:foo"); - List<Artifact> temps = - ImmutableList.copyOf(getOutputGroup(fooTarget, OutputGroupProvider.TEMP_FILES)); - assertThat(temps).hasSize(2); - - // Assert that the two temps are the .i and .s files we expect. - assertThat(filter(temps, fileTypePredicate(CppFileTypes.PREPROCESSED_CPP))).hasSize(1); - assertThat(filter(temps, fileTypePredicate(CppFileTypes.ASSEMBLER))).hasSize(1); + for (String cpu : new String[] {"k8", "piii"}) { + useConfiguration("--cpu=" + cpu, "--save_temps"); + ConfiguredTarget foo = getConfiguredTarget("//foo:foo"); + List<String> temps = + ActionsTestUtil.baseArtifactNames(getOutputGroup(foo, OutputGroupProvider.TEMP_FILES)); + if (getTargetConfiguration().getFragment(CppConfiguration.class).usePicForBinaries()) { + assertThat(temps).named(cpu).containsExactly("foo.pic.ii", "foo.pic.s"); + } else { + assertThat(temps).named(cpu).containsExactly("foo.ii", "foo.s"); + } + } } @Test public void testTempsForC() throws Exception { - useConfiguration("--save_temps"); - // Now try with a .c source file. - scratch.file("csrc/BUILD", "cc_library(name='csrc',", " srcs=['foo.c'])"); - ConfiguredTarget csrcTarget = getConfiguredTarget("//csrc:csrc"); - List<Artifact> cTemps = - ImmutableList.copyOf(getOutputGroup(csrcTarget, OutputGroupProvider.TEMP_FILES)); - assertThat(cTemps).hasSize(2); - - // Assert that the two temps are the .ii and .s files we expect. - assertThat(filter(cTemps, fileTypePredicate(CppFileTypes.PIC_PREPROCESSED_C))).hasSize(1); - assertThat(filter(cTemps, fileTypePredicate(CppFileTypes.PIC_ASSEMBLER))).hasSize(1); - } - - @Test - public void testTempsForTwoCc() throws Exception { - useConfiguration("--save_temps"); - - // For two source files we're expecting 4 temps. - scratch.file( - "twosrc/BUILD", "cc_library(name='twosrc',", " srcs=['foo1.cc', 'foo2.cc'])"); - ConfiguredTarget twoSrcTarget = getConfiguredTarget("//twosrc:twosrc"); - assertThat(getOutputGroup(twoSrcTarget, OutputGroupProvider.TEMP_FILES)).hasSize(4); - } - - private static Predicate<Artifact> fileTypePredicate(final FileType type) { - return new Predicate<Artifact>() { - @Override - public boolean apply(Artifact artifact) { - return type.matches(artifact.getFilename()); + scratch.file("csrc/BUILD", "cc_library(name='csrc', srcs=['foo.c'])"); + for (String cpu : new String[] {"k8", "piii"}) { + useConfiguration("--cpu=" + cpu, "--save_temps"); + // Now try with a .c source file. + ConfiguredTarget csrc = getConfiguredTarget("//csrc:csrc"); + List<String> temps = + ActionsTestUtil.baseArtifactNames(getOutputGroup(csrc, OutputGroupProvider.TEMP_FILES)); + if (getTargetConfiguration().getFragment(CppConfiguration.class).usePicForBinaries()) { + assertThat(temps).named(cpu).containsExactly("foo.pic.i", "foo.pic.s"); + } else { + assertThat(temps).named(cpu).containsExactly("foo.i", "foo.s"); } - }; + } } @Test @@ -483,7 +452,7 @@ // Tests that cc_tests built statically and with Fission will have the .dwp file // in their runfiles. - useConfiguration("--build_test_dwp", "--dynamic_mode=off", "--fission=yes"); + useConfiguration("--cpu=k8", "--build_test_dwp", "--dynamic_mode=off", "--fission=yes"); ConfiguredTarget target = scratchConfiguredTarget( "mypackage", "mytest", "cc_test(name = 'mytest', ", " srcs = ['mytest.cc'])");