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'])");