Move more things from TestConstants to AnalysisMock and LoadingMock.

Also remove other uses of TestConstants.

--
MOS_MIGRATED_REVID=127327339
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
index 8daa197..78cba05 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
@@ -16,7 +16,6 @@
 import static org.junit.Assert.assertEquals;
 
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.Path;
 
@@ -36,19 +35,16 @@
     Path installBase = fs.getPath("/my/install");
     Path outputBase = fs.getPath("/my/output");
     Path workspace = fs.getPath("/my/ws");
-    BlazeDirectories directories = new BlazeDirectories(installBase, outputBase, workspace,
-        TestConstants.PRODUCT_NAME);
+    BlazeDirectories directories = new BlazeDirectories(installBase, outputBase, workspace, "foo");
     assertEquals(directories.getExecRoot(), outputBase.getChild("ws"));
 
     workspace = null;
-    directories = new BlazeDirectories(installBase, outputBase, workspace,
-        TestConstants.PRODUCT_NAME);
+    directories = new BlazeDirectories(installBase, outputBase, workspace, "foo");
     assertEquals(directories.getExecRoot(),
         outputBase.getChild(BlazeDirectories.DEFAULT_EXEC_ROOT));
 
     workspace = fs.getPath("/");
-    directories = new BlazeDirectories(installBase, outputBase, workspace,
-        TestConstants.PRODUCT_NAME);
+    directories = new BlazeDirectories(installBase, outputBase, workspace, "foo");
     assertEquals(directories.getExecRoot(),
         outputBase.getChild(BlazeDirectories.DEFAULT_EXEC_ROOT));
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
index 1b7f42f..3f423eb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
@@ -32,7 +32,6 @@
 import com.google.devtools.build.lib.analysis.config.BinTools;
 import com.google.devtools.build.lib.exec.util.TestExecutorBuilder;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.util.io.FileOutErr;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
@@ -69,11 +68,12 @@
     substitutions = Lists.newArrayList();
     substitutions.add(Substitution.of("%key%", "foo"));
     substitutions.add(Substitution.of("%value%", "bar"));
-    directories = new BlazeDirectories(
-        scratch.resolve("/install"),
-        scratch.resolve("/base"),
-        scratch.resolve("/workspace"),
-        TestConstants.PRODUCT_NAME);
+    directories =
+        new BlazeDirectories(
+            scratch.resolve("/install"),
+            scratch.resolve("/base"),
+            scratch.resolve("/workspace"),
+            "mock-product-name");
     binTools = BinTools.empty(directories);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
index c654be1..873b6c4 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
@@ -29,7 +29,6 @@
 import com.google.devtools.build.lib.rules.cpp.CppOptions;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration;
 import com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.common.options.Options;
 
 import org.junit.Test;
@@ -47,7 +46,7 @@
 
   @Test
   public void testBasics() throws Exception {
-    if (getAnalysisMock().isThisBazel()) {
+    if (analysisMock.isThisBazel()) {
       return;
     }
 
@@ -69,7 +68,7 @@
 
   @Test
   public void testPlatformSuffix() throws Exception {
-    if (getAnalysisMock().isThisBazel()) {
+    if (analysisMock.isThisBazel()) {
       return;
     }
 
@@ -80,7 +79,7 @@
 
   @Test
   public void testEnvironment() throws Exception {
-    if (getAnalysisMock().isThisBazel()) {
+    if (analysisMock.isThisBazel()) {
       return;
     }
 
@@ -106,7 +105,7 @@
 
   @Test
   public void testHostCrosstoolTop() throws Exception {
-    if (getAnalysisMock().isThisBazel()) {
+    if (analysisMock.isThisBazel()) {
       return;
     }
 
@@ -157,7 +156,7 @@
 
   @Test
   public void testMultiCpu() throws Exception {
-    if (getAnalysisMock().isThisBazel()) {
+    if (analysisMock.isThisBazel()) {
       return;
     }
 
@@ -174,7 +173,7 @@
    */
   @Test
   public void testMultiCpuSorting() throws Exception {
-    if (getAnalysisMock().isThisBazel()) {
+    if (analysisMock.isThisBazel()) {
       return;
     }
 
@@ -236,10 +235,11 @@
 
   @Test
   public void testCycleInFragments() throws Exception {
-    configurationFactory = new ConfigurationFactory(
-        getAnalysisMock().createConfigurationCollectionFactory(),
-        createMockFragment(CppConfiguration.class, JavaConfiguration.class),
-        createMockFragment(JavaConfiguration.class, CppConfiguration.class));
+    configurationFactory =
+        new ConfigurationFactory(
+            analysisMock.createConfigurationCollectionFactory(),
+            createMockFragment(CppConfiguration.class, JavaConfiguration.class),
+            createMockFragment(JavaConfiguration.class, CppConfiguration.class));
     try {
       createCollection();
       fail();
@@ -250,9 +250,10 @@
 
   @Test
   public void testMissingFragment() throws Exception {
-    configurationFactory = new ConfigurationFactory(
-        getAnalysisMock().createConfigurationCollectionFactory(),
-        createMockFragment(CppConfiguration.class, JavaConfiguration.class));
+    configurationFactory =
+        new ConfigurationFactory(
+            analysisMock.createConfigurationCollectionFactory(),
+            createMockFragment(CppConfiguration.class, JavaConfiguration.class));
     try {
       createCollection();
       fail();
@@ -308,9 +309,10 @@
   @Test
   public void testEqualsOrIsSupersetOf() throws Exception {
     BuildConfiguration config = create();
-    BuildConfiguration trimmedConfig = config.clone(
-        ImmutableSet.<Class<? extends Fragment>>of(CppConfiguration.class),
-        TestRuleClassProvider.getRuleClassProvider());
+    BuildConfiguration trimmedConfig =
+        config.clone(
+            ImmutableSet.<Class<? extends Fragment>>of(CppConfiguration.class),
+            analysisMock.createRuleClassProvider());
     BuildConfiguration hostConfig = createHost();
 
     assertTrue(config.equalsOrIsSupersetOf(trimmedConfig));
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/StampTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/StampTest.java
index 03b9e86..1875088 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/StampTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/StampTest.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.packages.RuleFactory;
 import com.google.devtools.build.lib.packages.TargetUtils;
 import com.google.devtools.build.lib.packages.TriState;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,8 +39,7 @@
   public void testNoStampingForTests() throws Exception {
     RuleFactory ruleFactory =
         new RuleFactory(
-            TestRuleClassProvider.getRuleClassProvider(),
-            AttributeContainer.ATTRIBUTE_CONTAINER_FACTORY);
+            analysisMock.createRuleClassProvider(), AttributeContainer.ATTRIBUTE_CONTAINER_FACTORY);
     for (String name : ruleFactory.getRuleClassNames()) {
       RuleClass ruleClass = ruleFactory.getRuleClass(name);
       if (TargetUtils.isTestRuleName(name) && ruleClass.hasAttr("stamp", BuildType.TRISTATE)) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
index 27351e4..d01db4f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
@@ -13,11 +13,14 @@
 // limitations under the License.
 package com.google.devtools.build.lib.analysis.util;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 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;
 import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
+import com.google.devtools.build.lib.packages.PackageFactory;
+import com.google.devtools.build.lib.packages.util.LoadingMock;
 import com.google.devtools.build.lib.packages.util.MockCcSupport;
 import com.google.devtools.build.lib.packages.util.MockToolsConfig;
 import com.google.devtools.build.lib.rules.repository.LocalRepositoryFunction;
@@ -36,10 +39,8 @@
 import java.util.Collection;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-/**
- * Create a mock client for the analysis phase, as well as a configuration factory.
- */
-public abstract class AnalysisMock {
+/** Create a mock client for the analysis phase, as well as a configuration factory. */
+public abstract class AnalysisMock extends LoadingMock {
 
   public static AnalysisMock get() {
     try {
@@ -51,6 +52,31 @@
     }
   }
 
+  @Override
+  public String getProductName() {
+    return TestConstants.PRODUCT_NAME;
+  }
+
+  public ImmutableList<String> getEmbeddedTools() {
+    return TestConstants.EMBEDDED_TOOLS;
+  }
+
+  @Override
+  public PackageFactory.FactoryForTesting getPackageFactoryForTesting() {
+    return TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING;
+  }
+
+  @Override
+  public InvocationPolicyEnforcer getInvocationPolicyEnforcer() {
+    return new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+  }
+
+  @Override
+  public String getDefaultsPackageContent() {
+    return createRuleClassProvider()
+        .getDefaultsPackageContent(getInvocationPolicyEnforcer().getInvocationPolicy());
+  }
+
   /**
    * This is called from test setup to create the mock directory layout needed to create the
    * configuration.
@@ -67,14 +93,11 @@
 
   public abstract ConfigurationCollectionFactory createConfigurationCollectionFactory();
 
+  @Override
   public abstract ConfiguredRuleClassProvider createRuleClassProvider();
 
   public abstract Collection<String> getOptionOverrides();
 
-  public InvocationPolicyEnforcer getInvocationPolicyEnforcer() {
-    return new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
-  }
-
   public abstract boolean isThisBazel();
 
   public abstract MockCcSupport ccSupport();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 461da15..f7ffb70 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -57,7 +57,6 @@
 import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
 import com.google.devtools.build.lib.skyframe.util.SkyframeExecutorTestUtils;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.Preconditions;
@@ -118,6 +117,7 @@
   protected BlazeDirectories directories;
   protected MockToolsConfig mockToolsConfig;
 
+  protected AnalysisMock analysisMock;
   private OptionsParser optionsParser;
   protected PackageManager packageManager;
   private LoadingPhaseRunner loadingPhaseRunner;
@@ -133,14 +133,13 @@
 
   protected AnalysisTestUtil.DummyWorkspaceStatusActionFactory workspaceStatusActionFactory;
   private PathPackageLocator pkgLocator;
-  private AnalysisMock analysisMock;
 
   @Before
   public final void createMocks() throws Exception {
     analysisMock = getAnalysisMock();
     pkgLocator = new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory));
-    directories = new BlazeDirectories(outputBase, outputBase, rootDirectory,
-        TestConstants.PRODUCT_NAME);
+    directories =
+        new BlazeDirectories(outputBase, outputBase, rootDirectory, analysisMock.getProductName());
     workspaceStatusActionFactory =
         new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories);
 
@@ -149,7 +148,7 @@
     analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
     configurationFactory = analysisMock.createConfigurationFactory();
 
-    useRuleClassProvider(TestRuleClassProvider.getRuleClassProvider());
+    useRuleClassProvider(analysisMock.createRuleClassProvider());
   }
 
   /**
@@ -158,9 +157,11 @@
   protected void useRuleClassProvider(ConfiguredRuleClassProvider ruleClassProvider)
       throws Exception {
     this.ruleClassProvider = ruleClassProvider;
-    PackageFactory pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-        ruleClassProvider, scratch.getFileSystem());
-    BinTools binTools = BinTools.forUnitTesting(directories, TestConstants.EMBEDDED_TOOLS);
+    PackageFactory pkgFactory =
+        analysisMock
+            .getPackageFactoryForTesting()
+            .create(ruleClassProvider, scratch.getFileSystem());
+    BinTools binTools = BinTools.forUnitTesting(directories, analysisMock.getEmbeddedTools());
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
             pkgFactory,
@@ -174,13 +175,14 @@
             analysisMock.getSkyFunctions(),
             getPrecomputedValues(),
             ImmutableList.<SkyValueDirtinessChecker>of(),
-            TestConstants.PRODUCT_NAME);
+            analysisMock.getProductName());
     skyframeExecutor.preparePackageLoading(
         pkgLocator,
         Options.getDefaults(PackageCacheOptions.class).defaultVisibility,
         true,
         3,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+        ruleClassProvider.getDefaultsPackageContent(
+            analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()),
         UUID.randomUUID(),
         new TimestampGranularityMonitor(BlazeClock.instance()));
     packageManager = skyframeExecutor.getPackageManager();
@@ -224,8 +226,7 @@
       optionsParser.parse("--experimental_dynamic_configs");
     }
 
-    InvocationPolicyEnforcer optionsPolicyEnforcer =
-        new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+    InvocationPolicyEnforcer optionsPolicyEnforcer = analysisMock.getInvocationPolicyEnforcer();
     optionsPolicyEnforcer.enforce(optionsParser);
   }
 
@@ -288,7 +289,8 @@
         packageCacheOptions.defaultVisibility,
         true,
         7,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+        ruleClassProvider.getDefaultsPackageContent(
+            analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()),
         UUID.randomUUID(),
         new TimestampGranularityMonitor(BlazeClock.instance()));
     skyframeExecutor.invalidateFilesUnderPathForTesting(reporter,
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index f8c4db9..f84fd30 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -125,7 +125,6 @@
 import com.google.devtools.build.lib.skyframe.SkyValueDirtinessChecker;
 import com.google.devtools.build.lib.testutil.BlazeTestUtils;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.FileType;
 import com.google.devtools.build.lib.util.Preconditions;
@@ -160,6 +159,7 @@
 public abstract class BuildViewTestCase extends FoundationTestCase {
   protected static final int LOADING_PHASE_THREADS = 20;
 
+  protected AnalysisMock analysisMock;
   protected ConfiguredRuleClassProvider ruleClassProvider;
   protected ConfigurationFactory configurationFactory;
   protected BuildView view;
@@ -187,25 +187,28 @@
 
   @Before
   public final void initializeSkyframeExecutor() throws Exception {
-    AnalysisMock mock = getAnalysisMock();
-    directories = new BlazeDirectories(outputBase, outputBase, rootDirectory,
-        TestConstants.PRODUCT_NAME);
-    binTools = BinTools.forUnitTesting(directories, TestConstants.EMBEDDED_TOOLS);
+    analysisMock = getAnalysisMock();
+    directories =
+        new BlazeDirectories(outputBase, outputBase, rootDirectory, analysisMock.getProductName());
+    binTools = BinTools.forUnitTesting(directories, analysisMock.getEmbeddedTools());
     mockToolsConfig = new MockToolsConfig(rootDirectory, false);
-    mock.setupMockClient(mockToolsConfig);
-    mock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
+    analysisMock.setupMockClient(mockToolsConfig);
+    analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
 
-    configurationFactory = mock.createConfigurationFactory();
+    configurationFactory = analysisMock.createConfigurationFactory();
     packageCacheOptions = parsePackageCacheOptions();
     workspaceStatusActionFactory =
         new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories);
     mutableActionGraph = new MapBasedActionGraph();
     ruleClassProvider = getRuleClassProvider();
-    pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-        ruleClassProvider,
-        getPlatformSetRegexps(),
-        getEnvironmentExtensions(),
-        scratch.getFileSystem());
+    pkgFactory =
+        analysisMock
+            .getPackageFactoryForTesting()
+            .create(
+                ruleClassProvider,
+                getPlatformSetRegexps(),
+                getEnvironmentExtensions(),
+                scratch.getFileSystem());
     tsgm = new TimestampGranularityMonitor(BlazeClock.instance());
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
@@ -217,10 +220,10 @@
             ImmutableList.<DiffAwareness.Factory>of(),
             Predicates.<PathFragment>alwaysFalse(),
             getPreprocessorFactorySupplier(),
-            mock.getSkyFunctions(),
+            analysisMock.getSkyFunctions(),
             getPrecomputedValues(),
             ImmutableList.<SkyValueDirtinessChecker>of(),
-            TestConstants.PRODUCT_NAME);
+            analysisMock.getProductName());
     skyframeExecutor.preparePackageLoading(
         new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory)),
         ConstantRuleVisibility.PUBLIC, true, 7, "",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
index 267f49b..4bead55 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
@@ -40,8 +40,6 @@
 import com.google.devtools.build.lib.skyframe.SequencedSkyframeExecutor;
 import com.google.devtools.build.lib.skyframe.SkyValueDirtinessChecker;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.Path;
@@ -78,31 +76,34 @@
     public List<String> multiCpus;
   }
 
+  protected Path workspace;
+  protected AnalysisMock analysisMock;
   protected SequencedSkyframeExecutor skyframeExecutor;
   protected ConfigurationFactory configurationFactory;
-  protected Path workspace;
   protected ImmutableList<Class<? extends FragmentOptions>> buildOptionClasses;
 
   @Before
   public final void initializeSkyframeExecutor() throws Exception {
     workspace = rootDirectory;
-    ConfiguredRuleClassProvider ruleClassProvider = TestRuleClassProvider.getRuleClassProvider();
+    analysisMock = getAnalysisMock();
+    ConfiguredRuleClassProvider ruleClassProvider = analysisMock.createRuleClassProvider();
     PathPackageLocator pkgLocator =
         new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory));
     final PackageFactory pkgFactory;
-    BlazeDirectories directories = new BlazeDirectories(outputBase, outputBase, rootDirectory,
-        TestConstants.PRODUCT_NAME);
-    pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-        ruleClassProvider, scratch.getFileSystem());
+    BlazeDirectories directories =
+        new BlazeDirectories(outputBase, outputBase, rootDirectory, analysisMock.getProductName());
+    pkgFactory =
+        analysisMock
+            .getPackageFactoryForTesting()
+            .create(ruleClassProvider, scratch.getFileSystem());
     AnalysisTestUtil.DummyWorkspaceStatusActionFactory workspaceStatusActionFactory =
         new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories);
-    AnalysisMock analysisMock = getAnalysisMock();
 
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
             pkgFactory,
             directories,
-            BinTools.forUnitTesting(directories, TestConstants.EMBEDDED_TOOLS),
+            BinTools.forUnitTesting(directories, analysisMock.getEmbeddedTools()),
             workspaceStatusActionFactory,
             ruleClassProvider.getBuildInfoFactories(),
             ImmutableList.<DiffAwareness.Factory>of(),
@@ -111,21 +112,22 @@
             analysisMock.getSkyFunctions(),
             ImmutableList.<PrecomputedValue.Injected>of(),
             ImmutableList.<SkyValueDirtinessChecker>of(),
-            TestConstants.PRODUCT_NAME);
+            analysisMock.getProductName());
 
     skyframeExecutor.preparePackageLoading(
         pkgLocator,
         Options.getDefaults(PackageCacheOptions.class).defaultVisibility,
         true,
         7,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+        ruleClassProvider.getDefaultsPackageContent(
+            analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()),
         UUID.randomUUID(),
         new TimestampGranularityMonitor(BlazeClock.instance()));
 
     analysisMock.setupMockClient(new MockToolsConfig(rootDirectory));
     analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
     configurationFactory = analysisMock.createConfigurationFactory();
-    buildOptionClasses = TestRuleClassProvider.getRuleClassProvider().getConfigurationOptions();
+    buildOptionClasses = ruleClassProvider.getConfigurationOptions();
   }
 
   protected AnalysisMock getAnalysisMock() {
@@ -150,8 +152,7 @@
         .build());
     parser.parse(args);
 
-    InvocationPolicyEnforcer optionsPolicyEnforcer =
-        new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+    InvocationPolicyEnforcer optionsPolicyEnforcer = analysisMock.getInvocationPolicyEnforcer();
     optionsPolicyEnforcer.enforce(parser);
 
     ImmutableSortedSet<String> multiCpu = ImmutableSortedSet.copyOf(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java
index d8a4c56..d0aef7a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultsPackageUtil.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.config.DefaultsPackage;
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
@@ -36,8 +35,7 @@
             BuildConfiguration.Options.class, optionsClass));
     parser.parse(options);
 
-    InvocationPolicyEnforcer enforcer =
-        new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+    InvocationPolicyEnforcer enforcer = AnalysisMock.get().getInvocationPolicyEnforcer();
     enforcer.enforce(parser);
 
     return DefaultsPackage.getDefaultsPackageContent(BuildOptions.of(
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/LoadingMock.java b/src/test/java/com/google/devtools/build/lib/packages/util/LoadingMock.java
new file mode 100644
index 0000000..f08e502
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/LoadingMock.java
@@ -0,0 +1,52 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.packages.util;
+
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
+import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
+import com.google.devtools.build.lib.packages.PackageFactory;
+import com.google.devtools.build.lib.testutil.TestConstants;
+import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
+
+/** Create a mock client for the loading phase, as well as a configuration factory. */
+public class LoadingMock {
+  public static LoadingMock get() {
+    return new LoadingMock();
+  }
+
+  public String getProductName() {
+    return TestConstants.PRODUCT_NAME;
+  }
+
+  public PackageFactory.FactoryForTesting getPackageFactoryForTesting() {
+    return TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING;
+  }
+
+  public ConfiguredRuleClassProvider createRuleClassProvider() {
+    return TestRuleClassProvider.getRuleClassProvider();
+  }
+
+  public InvocationPolicyEnforcer getInvocationPolicyEnforcer() {
+    return new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+  }
+
+  /**
+   * Returns the defaults package for the default settings using {@link #createRuleClassProvider}
+   * and applying {@link #getInvocationPolicyEnforcer}.
+   */
+  public String getDefaultsPackageContent() {
+    return createRuleClassProvider()
+        .getDefaultsPackageContent(getInvocationPolicyEnforcer().getInvocationPolicy());
+  }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
index 36f7b1f..8b8d039 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
@@ -41,7 +41,6 @@
 import com.google.devtools.build.lib.skyframe.SkyValueDirtinessChecker;
 import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
@@ -68,12 +67,14 @@
 
   private static final int GLOBBING_THREADS = 7;
 
+  protected LoadingMock loadingMock;
   protected ConfiguredRuleClassProvider ruleClassProvider;
   protected PackageFactory packageFactory;
   protected SkyframeExecutor skyframeExecutor;
 
   @Before
   public final void initializeSkyframeExecutor() throws Exception {
+    loadingMock = LoadingMock.get();
     List<RuleDefinition> extraRules = getExtraRules();
     if (!extraRules.isEmpty()) {
       ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder();
@@ -83,10 +84,12 @@
       }
       ruleClassProvider = builder.build();
     } else {
-      ruleClassProvider = TestRuleClassProvider.getRuleClassProvider();
+      ruleClassProvider = loadingMock.createRuleClassProvider();
     }
-    packageFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-        ruleClassProvider, null, getEnvironmentExtensions(), scratch.getFileSystem());
+    packageFactory =
+        loadingMock
+            .getPackageFactoryForTesting()
+            .create(ruleClassProvider, null, getEnvironmentExtensions(), scratch.getFileSystem());
     skyframeExecutor = createSkyframeExecutor(getPreprocessorFactorySupplier());
     setUpSkyframe(parsePackageCacheOptions());
   }
@@ -101,7 +104,8 @@
     SkyframeExecutor skyframeExecutor =
         SequencedSkyframeExecutor.create(
             packageFactory,
-            new BlazeDirectories(outputBase, outputBase, rootDirectory, TestConstants.PRODUCT_NAME),
+            new BlazeDirectories(
+                outputBase, outputBase, rootDirectory, loadingMock.getProductName()),
             null, /* BinTools */
             null, /* workspaceStatusActionFactory */
             ruleClassProvider.getBuildInfoFactories(),
@@ -111,7 +115,7 @@
             ImmutableMap.<SkyFunctionName, SkyFunction>of(),
             ImmutableList.<PrecomputedValue.Injected>of(),
             ImmutableList.<SkyValueDirtinessChecker>of(),
-            TestConstants.PRODUCT_NAME);
+            loadingMock.getProductName());
     return skyframeExecutor;
   }
 
@@ -138,7 +142,7 @@
         packageCacheOptions.defaultVisibility,
         true,
         GLOBBING_THREADS,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+        loadingMock.getDefaultsPackageContent(),
         UUID.randomUUID(),
         new TimestampGranularityMonitor(BlazeClock.instance()));
     skyframeExecutor.setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages()));
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/AbstractTargetPatternEvaluatorTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/AbstractTargetPatternEvaluatorTest.java
index f4ba91e..8464cef 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/AbstractTargetPatternEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/AbstractTargetPatternEvaluatorTest.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.util.Pair;
 
 import org.junit.Before;
@@ -74,9 +73,7 @@
 
   @Before
   public final void initializeParser() throws Exception {
-    setUpSkyframe(
-        ConstantRuleVisibility.PRIVATE,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY));
+    setUpSkyframe(ConstantRuleVisibility.PRIVATE, loadingMock.getDefaultsPackageContent());
     parser = skyframeExecutor.getPackageManager().newTargetPatternEvaluator();
     parsingListener = new RecordingParsingListener(reporter);
   }
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IOExceptionsTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IOExceptionsTest.java
index 8203ab3..901e0bf 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/IOExceptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IOExceptionsTest.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.vfs.FileStatus;
 import com.google.devtools.build.lib.vfs.FileSystem;
@@ -64,9 +63,7 @@
 
   @Before
   public final void initializeVisitor() throws Exception {
-    setUpSkyframe(
-        ConstantRuleVisibility.PRIVATE,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY));
+    setUpSkyframe(ConstantRuleVisibility.PRIVATE, loadingMock.getDefaultsPackageContent());
     this.visitor = skyframeExecutor.pkgLoader();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
index 76ce0b4..3a2798f 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
@@ -34,6 +34,7 @@
 import com.google.devtools.build.lib.packages.Preprocessor;
 import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.packages.util.LoadingMock;
 import com.google.devtools.build.lib.skyframe.DiffAwareness;
 import com.google.devtools.build.lib.skyframe.PrecomputedValue;
 import com.google.devtools.build.lib.skyframe.SequencedSkyframeExecutor;
@@ -41,8 +42,6 @@
 import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
 import com.google.devtools.build.lib.syntax.GlobList;
 import com.google.devtools.build.lib.testutil.ManualClock;
-import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
@@ -465,22 +464,27 @@
       outputBase.createDirectory();
       addFile("WORKSPACE");
 
+      LoadingMock loadingMock = LoadingMock.get();
       skyframeExecutor =
           SequencedSkyframeExecutor.create(
-              TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-                  TestRuleClassProvider.getRuleClassProvider(), fs),
-              new BlazeDirectories(fs.getPath("/install"), fs.getPath("/output"), workspace,
-                  TestConstants.PRODUCT_NAME),
+              loadingMock
+                  .getPackageFactoryForTesting()
+                  .create(loadingMock.createRuleClassProvider(), fs),
+              new BlazeDirectories(
+                  fs.getPath("/install"),
+                  fs.getPath("/output"),
+                  workspace,
+                  loadingMock.getProductName()),
               null, /* BinTools */
               null, /* workspaceStatusActionFactory */
-              TestRuleClassProvider.getRuleClassProvider().getBuildInfoFactories(),
+              loadingMock.createRuleClassProvider().getBuildInfoFactories(),
               ImmutableList.of(new ManualDiffAwarenessFactory()),
               Predicates.<PathFragment>alwaysFalse(),
               supplier,
               ImmutableMap.<SkyFunctionName, SkyFunction>of(),
               ImmutableList.<PrecomputedValue.Injected>of(),
               ImmutableList.<SkyValueDirtinessChecker>of(),
-              TestConstants.PRODUCT_NAME);
+              loadingMock.getProductName());
       skyframeExecutor.preparePackageLoading(
           new PathPackageLocator(outputBase, ImmutableList.of(workspace)),
           ConstantRuleVisibility.PUBLIC, true, 7, "",
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
index 3bc277b..4800781 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
@@ -32,6 +32,7 @@
 import com.google.common.eventbus.Subscribe;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.BuildView;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -51,8 +52,6 @@
 import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
 import com.google.devtools.build.lib.testutil.ManualClock;
 import com.google.devtools.build.lib.testutil.MoreAsserts;
-import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.FileSystem;
@@ -71,11 +70,9 @@
 import org.junit.runners.JUnit4;
 
 import java.io.IOException;
-import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 import java.util.logging.Level;
@@ -595,14 +592,11 @@
     return loadingResult;
   }
 
-  private <K, V> Map.Entry<K, V> entryFor(K key, V value) {
-    return new AbstractMap.SimpleImmutableEntry<>(key, value);
-  }
-
   private static class LoadingPhaseTester {
     private final ManualClock clock = new ManualClock();
     private final Path workspace;
 
+    private final AnalysisMock analysisMock;
     private final SkyframeExecutor skyframeExecutor;
 
     private final List<Path> changes = new ArrayList<>();
@@ -622,28 +616,35 @@
       this.workspace = fs.getPath("/workspace");
       workspace.createDirectory();
       mockToolsConfig = new MockToolsConfig(workspace);
-      AnalysisMock.get().setupMockClient(mockToolsConfig);
+      analysisMock = AnalysisMock.get();
+      analysisMock.setupMockClient(mockToolsConfig);
       FileSystemUtils.deleteTree(workspace.getRelative("base"));
 
-      PackageFactory pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-          TestRuleClassProvider.getRuleClassProvider(), fs);
+      ConfiguredRuleClassProvider ruleClassProvider = analysisMock.createRuleClassProvider();
+      PackageFactory pkgFactory =
+          analysisMock.getPackageFactoryForTesting().create(ruleClassProvider, fs);
       PackageCacheOptions options = Options.getDefaults(PackageCacheOptions.class);
       storedErrors = new StoredEventHandler();
       BlazeDirectories directories =
-          new BlazeDirectories(fs.getPath("/install"), fs.getPath("/output"), workspace,
-              TestConstants.PRODUCT_NAME);
-      skyframeExecutor = SequencedSkyframeExecutor.create(pkgFactory,
-          directories,
-          null,  /* binTools -- not used */
-          null,  /* workspaceStatusActionFactory -- not used */
-          TestRuleClassProvider.getRuleClassProvider().getBuildInfoFactories(),
-          ImmutableList.<DiffAwareness.Factory>of(),
-          Predicates.<PathFragment>alwaysFalse(),
-          Preprocessor.Factory.Supplier.NullSupplier.INSTANCE,
-          AnalysisMock.get().getSkyFunctions(),
-          ImmutableList.<PrecomputedValue.Injected>of(),
-          ImmutableList.<SkyValueDirtinessChecker>of(),
-          TestConstants.PRODUCT_NAME);
+          new BlazeDirectories(
+              fs.getPath("/install"),
+              fs.getPath("/output"),
+              workspace,
+              analysisMock.getProductName());
+      skyframeExecutor =
+          SequencedSkyframeExecutor.create(
+              pkgFactory,
+              directories,
+              null, /* binTools -- not used */
+              null, /* workspaceStatusActionFactory -- not used */
+              ruleClassProvider.getBuildInfoFactories(),
+              ImmutableList.<DiffAwareness.Factory>of(),
+              Predicates.<PathFragment>alwaysFalse(),
+              Preprocessor.Factory.Supplier.NullSupplier.INSTANCE,
+              analysisMock.getSkyFunctions(),
+              ImmutableList.<PrecomputedValue.Injected>of(),
+              ImmutableList.<SkyValueDirtinessChecker>of(),
+              analysisMock.getProductName());
       PathPackageLocator pkgLocator = PathPackageLocator.create(
           null, options.packagePath, storedErrors, workspace, workspace);
       skyframeExecutor.preparePackageLoading(
@@ -651,8 +652,7 @@
           ConstantRuleVisibility.PRIVATE,
           true,
           7,
-          TestRuleClassProvider.getRuleClassProvider()
-              .getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+          analysisMock.getDefaultsPackageContent(),
           UUID.randomUUID(),
           new TimestampGranularityMonitor(clock));
       loadingPhaseRunner = skyframeExecutor.getLoadingPhaseRunner(
@@ -732,9 +732,7 @@
     }
 
     private void sync() throws InterruptedException {
-      String pkgContents =
-          TestRuleClassProvider.getRuleClassProvider()
-              .getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY);
+      String pkgContents = analysisMock.getDefaultsPackageContent();
       skyframeExecutor.setupDefaultPackage(pkgContents);
       clock.advanceMillis(1);
       ModifiedFileSet.Builder builder = ModifiedFileSet.builder();
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
index 1e2034b..9afcce1 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
@@ -48,8 +48,6 @@
 import com.google.devtools.build.lib.syntax.BuildFileAST;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
 import com.google.devtools.build.lib.testutil.MoreAsserts;
-import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.ModifiedFileSet;
@@ -75,19 +73,21 @@
 @RunWith(JUnit4.class)
 public class PackageCacheTest extends FoundationTestCase {
 
+  private AnalysisMock analysisMock;
   private ConfiguredRuleClassProvider ruleClassProvider;
   private SkyframeExecutor skyframeExecutor;
 
   @Before
   public final void initializeSkyframeExecutor() throws Exception {
-    ruleClassProvider = TestRuleClassProvider.getRuleClassProvider();
-    BlazeDirectories directories = new BlazeDirectories(outputBase, outputBase, rootDirectory,
-        TestConstants.PRODUCT_NAME);
+    analysisMock = AnalysisMock.get();
+    ruleClassProvider = analysisMock.createRuleClassProvider();
+    BlazeDirectories directories =
+        new BlazeDirectories(outputBase, outputBase, rootDirectory, analysisMock.getProductName());
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
-            TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-                ruleClassProvider,
-                scratch.getFileSystem()),
+            analysisMock
+                .getPackageFactoryForTesting()
+                .create(ruleClassProvider, scratch.getFileSystem()),
             directories,
             null, /* BinTools */
             null, /* workspaceStatusActionFactory */
@@ -98,7 +98,7 @@
             AnalysisMock.get().getSkyFunctions(),
             ImmutableList.<PrecomputedValue.Injected>of(),
             ImmutableList.<SkyValueDirtinessChecker>of(),
-            TestConstants.PRODUCT_NAME);
+            analysisMock.getProductName());
     setUpSkyframe(parsePackageCacheOptions());
   }
 
@@ -110,7 +110,7 @@
         packageCacheOptions.defaultVisibility,
         true,
         7,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+        analysisMock.getDefaultsPackageContent(),
         UUID.randomUUID(),
         new TimestampGranularityMonitor(BlazeClock.instance()));
     skyframeExecutor.setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages()));
@@ -121,8 +121,7 @@
     parser.parse(new String[] { "--default_visibility=public" });
     parser.parse(options);
 
-    InvocationPolicyEnforcer optionsPolicyEnforcer =
-        new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+    InvocationPolicyEnforcer optionsPolicyEnforcer = analysisMock.getInvocationPolicyEnforcer();
     try {
       optionsPolicyEnforcer.enforce(parser);
     } catch (OptionsParsingException e) {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
index 4f26eb6..d2d84e9 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
@@ -43,6 +43,7 @@
 import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -65,8 +66,7 @@
     OptionsParser optionsParser = OptionsParser.newOptionsParser(testFragments);
     try {
       optionsParser.parse(args);
-      InvocationPolicyEnforcer optionsPolicyEnforcer =
-          new InvocationPolicyEnforcer(TestConstants.TEST_INVOCATION_POLICY);
+      InvocationPolicyEnforcer optionsPolicyEnforcer = analysisMock.getInvocationPolicyEnforcer();
       optionsPolicyEnforcer.enforce(optionsParser);
     } catch (OptionsParsingException e) {
       throw new IllegalStateException(e);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
index 3a9565c..2b35fa1 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -23,6 +23,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.bazel.rules.BazelRulesModule;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.events.NullEventHandler;
@@ -30,8 +31,6 @@
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
 import com.google.devtools.build.lib.skyframe.PackageLookupValue.ErrorReason;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -69,11 +68,13 @@
     Path emptyPackagePath = rootDirectory.getRelative("somewhere/else");
     scratch.file("parentpackage/BUILD");
 
+    AnalysisMock analysisMock = AnalysisMock.get();
     AtomicReference<PathPackageLocator> pkgLocator = new AtomicReference<>(
         new PathPackageLocator(outputBase, ImmutableList.of(emptyPackagePath, rootDirectory)));
     deletedPackages = new AtomicReference<>(ImmutableSet.<PackageIdentifier>of());
-    BlazeDirectories directories = new BlazeDirectories(rootDirectory, outputBase, rootDirectory,
-        TestConstants.PRODUCT_NAME);
+    BlazeDirectories directories =
+        new BlazeDirectories(
+            rootDirectory, outputBase, rootDirectory, analysisMock.getProductName());
     ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper(
         pkgLocator, false, directories);
 
@@ -88,17 +89,18 @@
     skyFunctions.put(SkyFunctions.FILE, new FileFunction(pkgLocator));
     skyFunctions.put(SkyFunctions.BLACKLISTED_PACKAGE_PREFIXES,
         new BlacklistedPackagePrefixesFunction());
-    RuleClassProvider ruleClassProvider = TestRuleClassProvider.getRuleClassProvider();
-    skyFunctions.put(SkyFunctions.WORKSPACE_AST,
-        new WorkspaceASTFunction(TestRuleClassProvider.getRuleClassProvider()));
+    RuleClassProvider ruleClassProvider = analysisMock.createRuleClassProvider();
+    skyFunctions.put(SkyFunctions.WORKSPACE_AST, new WorkspaceASTFunction(ruleClassProvider));
     skyFunctions.put(
         SkyFunctions.WORKSPACE_FILE,
         new WorkspaceFileFunction(
             ruleClassProvider,
-            TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-                ruleClassProvider,
-                new BazelRulesModule().getPackageEnvironmentExtension(),
-                scratch.getFileSystem()),
+            analysisMock
+                .getPackageFactoryForTesting()
+                .create(
+                    ruleClassProvider,
+                    new BazelRulesModule().getPackageEnvironmentExtension(),
+                    scratch.getFileSystem()),
             directories));
     skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction());
     differencer = new RecordingDifferencer();
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
index eefaf57..7841f36 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
@@ -30,14 +30,14 @@
 import com.google.devtools.build.lib.actions.FilesetTraversalParams.PackageBoundaryMode;
 import com.google.devtools.build.lib.actions.Root;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
+import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.events.NullEventHandler;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
 import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalValue.ResolvedFile;
 import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalValue.TraversalRequest;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.Path;
@@ -81,17 +81,19 @@
 
   @Before
   public final void setUp() throws Exception  {
+    AnalysisMock analysisMock = AnalysisMock.get();
     pkgLocator = new AtomicReference<>(
         new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory)));
     AtomicReference<ImmutableSet<PackageIdentifier>> deletedPackages =
         new AtomicReference<>(ImmutableSet.<PackageIdentifier>of());
-    BlazeDirectories directories = new BlazeDirectories(rootDirectory, outputBase, rootDirectory,
-        TestConstants.PRODUCT_NAME);
+    BlazeDirectories directories =
+        new BlazeDirectories(
+            rootDirectory, outputBase, rootDirectory, analysisMock.getProductName());
     ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper(
         pkgLocator, false, directories);
 
+    ConfiguredRuleClassProvider ruleClassProvider = analysisMock.createRuleClassProvider();
     Map<SkyFunctionName, SkyFunction> skyFunctions = new HashMap<>();
-
     skyFunctions.put(SkyFunctions.FILE_STATE, new FileStateFunction(
         new AtomicReference<TimestampGranularityMonitor>(), externalFilesHelper));
     skyFunctions.put(SkyFunctions.FILE, new FileFunction(pkgLocator));
@@ -108,12 +110,14 @@
         new PackageFunction(null, null, null, null, null, null, null));
     skyFunctions.put(SkyFunctions.PACKAGE_LOOKUP,
         new PackageLookupFunction(deletedPackages));
-    skyFunctions.put(SkyFunctions.WORKSPACE_AST,
-        new WorkspaceASTFunction(TestRuleClassProvider.getRuleClassProvider()));
-    skyFunctions.put(SkyFunctions.WORKSPACE_FILE,
-        new WorkspaceFileFunction(TestRuleClassProvider.getRuleClassProvider(),
-            TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create(
-                TestRuleClassProvider.getRuleClassProvider(), scratch.getFileSystem()),
+    skyFunctions.put(SkyFunctions.WORKSPACE_AST, new WorkspaceASTFunction(ruleClassProvider));
+    skyFunctions.put(
+        SkyFunctions.WORKSPACE_FILE,
+        new WorkspaceFileFunction(
+            ruleClassProvider,
+            analysisMock
+                .getPackageFactoryForTesting()
+                .create(ruleClassProvider, scratch.getFileSystem()),
             directories));
     skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction());
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java
index a167135..b5a9494 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java
@@ -26,7 +26,6 @@
 import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
 import com.google.devtools.build.lib.packages.util.SubincludePreprocessor;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.FileStatus;
@@ -409,7 +408,7 @@
             ConstantRuleVisibility.PRIVATE,
             true,
             7,
-            ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+            loadingMock.getDefaultsPackageContent(),
             UUID.randomUUID(),
             new TimestampGranularityMonitor(BlazeClock.instance()));
     this.visitor = getSkyframeExecutor().pkgLoader();
@@ -453,7 +452,7 @@
             ConstantRuleVisibility.PRIVATE,
             true,
             7,
-            ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY),
+            loadingMock.getDefaultsPackageContent(),
             UUID.randomUUID(),
             new TimestampGranularityMonitor(BlazeClock.instance()));
     this.visitor = getSkyframeExecutor().pkgLoader();
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java
index 81caf1f..25ddfc3 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java
@@ -38,7 +38,6 @@
 import com.google.devtools.build.lib.packages.util.PreprocessorUtils;
 import com.google.devtools.build.lib.pkgcache.TransitivePackageLoader;
 import com.google.devtools.build.lib.testutil.ManualClock;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.FileStatus;
 import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.ModifiedFileSet;
@@ -282,9 +281,7 @@
 
   @Before
   public final void initializeVisitor() throws Exception {
-    setUpSkyframe(
-        ConstantRuleVisibility.PRIVATE,
-        ruleClassProvider.getDefaultsPackageContent(TestConstants.TEST_INVOCATION_POLICY));
+    setUpSkyframe(ConstantRuleVisibility.PRIVATE, loadingMock.getDefaultsPackageContent());
     this.visitor = skyframeExecutor.pkgLoader();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index 9f6d170..5e5fb7d 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -36,7 +36,6 @@
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
@@ -712,7 +711,7 @@
   public void testFeatures() throws Exception {
     SkylarkRuleContext ruleContext = createRuleContext("//foo:cc_with_features");
     Object result = evalRuleContextCode(ruleContext, "ruleContext.features");
-    assertThat((SkylarkList) result).containsExactly("cc_include_scanning", "f1", "f2");
+    assertThat((SkylarkList<?>) result).containsExactly("cc_include_scanning", "f1", "f2");
   }
 
 
@@ -725,9 +724,11 @@
 
   @Test
   public void testWorkspaceName() throws Exception {
+    assertThat(ruleClassProvider.getRunfilesPrefix()).isNotNull();
+    assertThat(ruleClassProvider.getRunfilesPrefix()).isNotEmpty();
     SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
     Object result = evalRuleContextCode(ruleContext, "ruleContext.workspace_name");
-    assertSame(result, TestConstants.WORKSPACE_NAME);
+    assertSame(result, ruleClassProvider.getRunfilesPrefix());
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
index 580bff9..7b269dd 100644
--- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -82,7 +82,7 @@
   @Before
   public final void setUp() throws Exception {
     Path testRoot = createTestRoot();
-    Path workspaceDir = testRoot.getRelative(TestConstants.WORKSPACE_NAME);
+    Path workspaceDir = testRoot.getRelative("workspace-name");
     workspaceDir.createDirectory();
 
     // setup output base & directories