Remove ConfigurationCollectionFactory as part of the static config cleanup.

PiperOrigin-RevId: 165578449
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
deleted file mode 100644
index 8d93d05..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2014 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.analysis;
-
-import com.google.common.cache.Cache;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
-import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
-import com.google.devtools.build.lib.events.EventHandler;
-import javax.annotation.Nullable;
-
-/**
- * A factory for configuration collection creation.
- */
-public interface ConfigurationCollectionFactory {
-  /**
-   * Creates the top-level configuration for a build.
-   *
-   * <p>Also it may create a set of BuildConfigurations and define a transition table over them. All
-   * configurations during a build should be accessible from this top-level configuration via
-   * configuration transitions.
-   *
-   * @param cache a cache for BuildConfigurations
-   * @param loadedPackageProvider the package provider
-   * @param buildOptions top-level build options representing the command-line
-   * @param errorEventListener the event listener for errors
-   * @param mainRepositoryName the workspace name of the main repository
-   * @return the top-level configuration
-   * @throws InvalidConfigurationException
-   */
-  @Nullable
-  BuildConfiguration createConfigurations(
-      Cache<String, BuildConfiguration> cache,
-      PackageProviderForConfigurations loadedPackageProvider,
-      BuildOptions buildOptions,
-      EventHandler errorEventListener,
-      String mainRepositoryName)
-      throws InvalidConfigurationException, InterruptedException;
-}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index f46145a..b929b99 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -213,7 +213,6 @@
     private final Map<Class<? extends RuleDefinition>, RuleClass> ruleMap = new HashMap<>();
     private final Digraph<Class<? extends RuleDefinition>> dependencyGraph =
         new Digraph<>();
-    private ConfigurationCollectionFactory configurationCollectionFactory;
     private ImmutableMap.Builder<Attribute.Transition, Attribute.Transition> dynamicTransitionMaps
         = ImmutableMap.builder();
     private Class<? extends BuildConfiguration.Fragment> universalFragment;
@@ -325,11 +324,6 @@
       return this;
     }
 
-    public Builder setConfigurationCollectionFactory(ConfigurationCollectionFactory factory) {
-      this.configurationCollectionFactory = factory;
-      return this;
-    }
-
     public Builder addDynamicTransitionMaps(Map<Attribute.Transition, Attribute.Transition> maps) {
       dynamicTransitionMaps.putAll(maps);
       return this;
@@ -443,7 +437,6 @@
           ImmutableList.copyOf(buildInfoFactories),
           ImmutableList.copyOf(configurationOptions),
           ImmutableList.copyOf(configurationFragmentFactories),
-          configurationCollectionFactory,
           new DynamicTransitionMapper(dynamicTransitionMaps.build()),
           universalFragment,
           prerequisiteValidator,
@@ -548,11 +541,6 @@
   private final ImmutableList<ConfigurationFragmentFactory> configurationFragmentFactories;
 
   /**
-   * The factory that creates the configuration collection.
-   */
-  private final ConfigurationCollectionFactory configurationCollectionFactory;
-
-  /**
    * The dynamic configuration transition mapper.
    */
   private final DynamicTransitionMapper dynamicTransitionMapper;
@@ -582,7 +570,6 @@
       ImmutableList<BuildInfoFactory> buildInfoFactories,
       ImmutableList<Class<? extends FragmentOptions>> configurationOptions,
       ImmutableList<ConfigurationFragmentFactory> configurationFragments,
-      ConfigurationCollectionFactory configurationCollectionFactory,
       DynamicTransitionMapper dynamicTransitionMapper,
       Class<? extends BuildConfiguration.Fragment> universalFragment,
       PrerequisiteValidator prerequisiteValidator,
@@ -600,7 +587,6 @@
     this.buildInfoFactories = buildInfoFactories;
     this.configurationOptions = configurationOptions;
     this.configurationFragmentFactories = configurationFragments;
-    this.configurationCollectionFactory = configurationCollectionFactory;
     this.dynamicTransitionMapper = dynamicTransitionMapper;
     this.universalFragment = universalFragment;
     this.prerequisiteValidator = prerequisiteValidator;
@@ -674,13 +660,6 @@
   }
 
   /**
-   * Returns the configuration collection creator.
-   */
-  public ConfigurationCollectionFactory getConfigurationCollectionFactory() {
-    return configurationCollectionFactory;
-  }
-
-  /**
    * Returns the dynamic configuration transition mapper.
    */
   public DynamicTransitionMapper getDynamicTransitionMapper() {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
deleted file mode 100644
index d740102..0000000
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2014 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.bazel.rules;
-
-import com.google.common.cache.Cache;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.HashBasedTable;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Table;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection.ConfigurationHolder;
-import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection.Transitions;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
-import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
-import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
-import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
-import com.google.devtools.build.lib.rules.cpp.CppRuleClasses.LipoTransition;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-import javax.annotation.Nullable;
-
-/**
- * Configuration collection used by the rules Bazel knows for statically configured builds.
-  *
-  * <p>Dynamically configured builds should never touch this file.
- */
-public class BazelConfigurationCollection implements ConfigurationCollectionFactory {
-  @Override
-  @Nullable
-  public BuildConfiguration createConfigurations(
-      Cache<String, BuildConfiguration> cache,
-      PackageProviderForConfigurations packageProvider,
-      BuildOptions buildOptions,
-      EventHandler eventHandler,
-      String mainRepositoryName)
-      throws InvalidConfigurationException, InterruptedException {
-    // Target configuration
-    // Dead code: being removed. The original value used a class that's already been deleted.
-    BuildConfiguration targetConfiguration = null;
-    if (targetConfiguration == null) {
-      return null;
-    }
-
-    BuildConfiguration dataConfiguration = targetConfiguration;
-
-    // Host configuration
-    // Note that this passes in the dataConfiguration, not the target
-    // configuration. This is intentional.
-    BuildConfiguration hostConfiguration = getHostConfigurationFromRequest(
-        packageProvider, dataConfiguration, buildOptions, cache, mainRepositoryName);
-    if (hostConfiguration == null) {
-      return null;
-    }
-
-    ListMultimap<SplitTransition<?>, BuildConfiguration> splitTransitionsTable =
-        ArrayListMultimap.create();
-    for (SplitTransition<BuildOptions> transition : buildOptions.getPotentialSplitTransitions()) {
-      for (BuildOptions splitOptions : transition.split(buildOptions)) {
-        // Dead code: being removed. The original value used a class that's already been deleted.
-        BuildConfiguration splitConfig = null;
-        splitTransitionsTable.put(transition, splitConfig);
-      }
-    }
-    if (packageProvider.valuesMissing()) {
-      return null;
-    }
-    BuildConfiguration result = setupTransitions(
-        targetConfiguration, dataConfiguration, hostConfiguration, splitTransitionsTable);
-    result.reportInvalidOptions(eventHandler);
-    return result;
-  }
-
-  private static class BazelTransitions extends BuildConfigurationCollection.Transitions {
-    public BazelTransitions(BuildConfiguration configuration,
-        Map<? extends Transition, ConfigurationHolder> transitionTable,
-        ListMultimap<? extends SplitTransition<?>, BuildConfiguration> splitTransitionTable) {
-      super(configuration, transitionTable, splitTransitionTable);
-    }
-
-    @Override
-    @Deprecated
-    public Transition getDynamicTransition(Transition configurationTransition) {
-      // Keep this interface for now because some other dead code is still calling it.
-      throw new UnsupportedOperationException(
-          "This interface is no longer supported and will be removed soon.");
-    }
-  }
-
-  /**
-   * Gets the correct host configuration for this build. The behavior depends on the value of the
-   * --distinct_host_configuration flag.
-   *
-   * <p>With --distinct_host_configuration=false, we use identical configurations for the host and
-   * target, and you can ignore everything below. But please note: if you're cross-compiling for k8
-   * on a piii machine, your build will fail. This is a stopgap measure.
-   *
-   * <p>Currently, every build is (in effect) a cross-compile, in the strict sense that host and
-   * target configurations are unequal, thus we do not issue a "cross-compiling" warning. (Perhaps
-   * we should?) *
-   *
-   * @param requestConfig the requested target (not host!) configuration for this build.
-   * @param buildOptions the configuration options used for the target configuration
-   */
-  @Nullable
-  private static BuildConfiguration getHostConfigurationFromRequest(
-      PackageProviderForConfigurations loadedPackageProvider,
-      BuildConfiguration requestConfig,
-      BuildOptions buildOptions,
-      Cache<String, BuildConfiguration> cache,
-      String repositoryName)
-      throws InvalidConfigurationException, InterruptedException {
-    BuildConfiguration.Options commonOptions = buildOptions.get(BuildConfiguration.Options.class);
-    if (!commonOptions.useDistinctHostConfiguration) {
-      return requestConfig;
-    } else {
-      // Dead code: being removed. The original value used a class that's already been deleted.
-      BuildConfiguration hostConfig = null;
-      if (hostConfig == null) {
-        return null;
-      }
-      return hostConfig;
-    }
-  }
-
-  static BuildConfiguration setupTransitions(BuildConfiguration targetConfiguration,
-      BuildConfiguration dataConfiguration, BuildConfiguration hostConfiguration,
-      ListMultimap<SplitTransition<?>, BuildConfiguration> splitTransitionsTable) {
-    Set<BuildConfiguration> allConfigurations = new LinkedHashSet<>();
-    allConfigurations.add(targetConfiguration);
-    allConfigurations.add(dataConfiguration);
-    allConfigurations.add(hostConfiguration);
-    allConfigurations.addAll(splitTransitionsTable.values());
-
-    Table<BuildConfiguration, Transition, ConfigurationHolder> transitionBuilder =
-        HashBasedTable.create();
-    for (BuildConfiguration from : allConfigurations) {
-      for (ConfigurationTransition transition : ConfigurationTransition.values()) {
-        BuildConfiguration to;
-        if (transition == ConfigurationTransition.HOST) {
-          to = hostConfiguration;
-        } else if (transition == ConfigurationTransition.DATA && from == targetConfiguration) {
-          to = dataConfiguration;
-        } else {
-          to = from;
-        }
-        transitionBuilder.put(from, transition, new ConfigurationHolder(to));
-      }
-    }
-
-    // TODO(bazel-team): This makes LIPO totally not work. Just a band-aid until we get around to
-    // implementing a way for the C++ rules to contribute this transition to the configuration
-    // collection.
-    for (BuildConfiguration config : allConfigurations) {
-      transitionBuilder.put(config, LipoTransition.LIPO_COLLECTOR,
-          new ConfigurationHolder(config));
-      transitionBuilder.put(config, LipoTransition.TARGET_CONFIG_FOR_LIPO,
-          new ConfigurationHolder(config.isHostConfiguration() ? null : config));
-    }
-
-    for (BuildConfiguration config : allConfigurations) {
-      // We allow host configurations to be shared between target configurations. In that case, the
-      // transitions may already be set.
-      // TODO(bazel-team): Check that the transitions are identical, or even better, change the
-      // code to set the host configuration transitions before we even create the target
-      // configuration.
-      if (config.isHostConfiguration() && config.getTransitions() != null) {
-        continue;
-      }
-      boolean isSplitConfig = splitTransitionsTable.values().contains(config);
-      // When --experimental_multi_cpu is set, we create multiple target configurations that only
-      // differ by --cpu. We may therefore end up with multiple identical split configurations, if
-      // the split transition overwrites the cpu, which it usually does.
-      if (isSplitConfig && config.getTransitions() != null) {
-        continue;
-      }
-      Transitions outgoingTransitions =
-          new BazelTransitions(
-              config,
-              transitionBuilder.row(config),
-              // Split transitions must not have their own split transitions because then they
-              // would be applied twice due to a quirk in DependencyResolver. See the comment in
-              // DependencyResolver.resolveLateBoundAttributes().
-              isSplitConfig
-                  ? ImmutableListMultimap.<SplitTransition<?>, BuildConfiguration>of()
-                  : splitTransitionsTable);
-      config.setConfigurationTransitions(outgoingTransitions);
-    }
-
-    return targetConfiguration;
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 87de50c..520272e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -209,7 +209,6 @@
         public void init(Builder builder) {
           builder
               .setProductName("bazel")
-              .setConfigurationCollectionFactory(new BazelConfigurationCollection())
               .setPrelude("//tools/build_rules:prelude_bazel")
               .setNativeLauncherLabel("//tools/launcher:launcher")
               .setRunfilesPrefix(Label.DEFAULT_REPOSITORY_DIRECTORY)
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
index b6b6565..266b320 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.MutableClassToInstanceMap;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -40,13 +39,11 @@
 
   private final BlazeDirectories directories;
   private final ConfiguredRuleClassProvider ruleClassProvider;
-  private final ConfigurationCollectionFactory collectionFactory;
 
   public BuildConfigurationFunction(BlazeDirectories directories,
       RuleClassProvider ruleClassProvider) {
     this.directories = directories;
     this.ruleClassProvider = (ConfiguredRuleClassProvider) ruleClassProvider;
-    collectionFactory = this.ruleClassProvider.getConfigurationCollectionFactory();
   }
 
   @Override
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 5131112..ad149ea 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
@@ -19,14 +19,12 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.PlatformConfigurationLoader;
 import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyLoader;
 import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.bazel.rules.BazelConfiguration;
-import com.google.devtools.build.lib.bazel.rules.BazelConfigurationCollection;
 import com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration;
 import com.google.devtools.build.lib.packages.util.BazelMockCcSupport;
 import com.google.devtools.build.lib.packages.util.MockCcSupport;
@@ -255,11 +253,6 @@
   }
 
   @Override
-  public ConfigurationCollectionFactory createConfigurationCollectionFactory() {
-    return new BazelConfigurationCollection();
-  }
-
-  @Override
   public ConfiguredRuleClassProvider createRuleClassProvider() {
     return TestRuleClassProvider.getRuleClassProvider();
   }
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 4c1d1d5..ba14b25 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
@@ -15,7 +15,6 @@
 
 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.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction;
@@ -98,8 +97,6 @@
    */
   public abstract void setupMockWorkspaceFiles(Path embeddedBinariesRoot) throws IOException;
 
-  public abstract ConfigurationCollectionFactory createConfigurationCollectionFactory();
-
   /** Returns the default factories for configuration fragments used in tests. */
   public abstract List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories();
 
@@ -155,11 +152,6 @@
     }
 
     @Override
-    public ConfigurationCollectionFactory createConfigurationCollectionFactory() {
-      return delegate.createConfigurationCollectionFactory();
-    }
-
-    @Override
     public List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories() {
       return delegate.getDefaultConfigurationFragmentFactories();
     }
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
index 3d6288d..5e99114 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
@@ -22,7 +22,6 @@
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ServerDirectories;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -47,7 +46,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
 
 /** Tests the handling of rc-options in {@link BlazeCommandDispatcher}. */
 @RunWith(JUnit4.class)
@@ -155,8 +153,6 @@
                     builder.addConfigurationOptions(MockFragmentOptions.class);
                     // The tools repository is needed for createGlobals
                     builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
-                    builder.setConfigurationCollectionFactory(
-                        Mockito.mock(ConfigurationCollectionFactory.class));
                   }
                 })
             .build();
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
index 8d8e8d6..b254c4e 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ServerDirectories;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -52,7 +51,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
 
 /** Tests of CommandEnvironment's command-interrupting exit functionality. */
 @RunWith(JUnit4.class)
@@ -364,9 +362,6 @@
                   public void initializeRuleClasses(ConfiguredRuleClassProvider.Builder builder) {
                     // Can't create a Skylark environment without a tools repository!
                     builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
-                    // Can't create a runtime without a configuration collection factory!
-                    builder.setConfigurationCollectionFactory(
-                        Mockito.mock(ConfigurationCollectionFactory.class));
                     // Can't create a defaults package without the base options in there!
                     builder.addConfigurationOptions(BuildConfiguration.Options.class);
                   }