diff options
author | 2016-11-17 23:14:51 +0000 | |
---|---|---|
committer | 2016-11-18 10:54:41 +0000 | |
commit | 41ad6ab0db585b49dafca9d4fca8fb8302709fd5 (patch) | |
tree | 9fc9435e7079fec0fec043cedeb54e768e82fbfe | |
parent | a2565aa2b33273972554325a02f2a9bc30a15c62 (diff) |
Initializes BuildViewTestCase's configuration factory with ruleClassProvider's
fragments. This lets the master test configs include custom fragments that
can get injected in an overridden getRuleClassProvider().
Also adds ability to run BuildViewTestCases in any dynamic configuration
mode.
--
MOS_MIGRATED_REVID=139513822
3 files changed, 38 insertions, 8 deletions
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 1189d99f31..395ce3d04d 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,6 +19,7 @@ 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.analysis.config.ConfigurationFragmentFactory; 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; @@ -47,6 +48,7 @@ import com.google.devtools.build.skyframe.SkyFunctionName; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.List; public final class BazelAnalysisMock extends AnalysisMock { public static final AnalysisMock INSTANCE = new BazelAnalysisMock(); @@ -215,7 +217,19 @@ public final class BazelAnalysisMock extends AnalysisMock { @Override public ConfigurationFactory createConfigurationFactory() { - return new ConfigurationFactory(new BazelConfigurationCollection(), + return createConfigurationFactory(getDefaultConfigurationFactories()); + } + + @Override + public ConfigurationFactory createConfigurationFactory( + List<ConfigurationFragmentFactory> configurationFragmentFactories) { + return new ConfigurationFactory( + new BazelConfigurationCollection(), + configurationFragmentFactories); + } + + private static List<ConfigurationFragmentFactory> getDefaultConfigurationFactories() { + return ImmutableList.<ConfigurationFragmentFactory>of( new BazelConfiguration.Loader(), new CppConfigurationLoader(Functions.<String>identity()), new PythonConfigurationLoader(), 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 c1c8a55fbb..04d1bd22fb 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 @@ -18,6 +18,7 @@ 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.analysis.config.ConfigurationFragmentFactory; import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryFunction; import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryRule; import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer; @@ -39,6 +40,7 @@ import com.google.devtools.build.skyframe.SkyFunctionName; import java.io.IOException; import java.lang.reflect.Field; import java.util.Collection; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; /** Create a mock client for the analysis phase, as well as a configuration factory. */ @@ -93,6 +95,9 @@ public abstract class AnalysisMock extends LoadingMock { public abstract ConfigurationFactory createConfigurationFactory(); + public abstract ConfigurationFactory createConfigurationFactory( + List<ConfigurationFragmentFactory> configurationFragmentFactories); + public abstract ConfigurationCollectionFactory createConfigurationCollectionFactory(); @Override @@ -146,6 +151,12 @@ public abstract class AnalysisMock extends LoadingMock { } @Override + public ConfigurationFactory createConfigurationFactory( + List<ConfigurationFragmentFactory> configurationFragmentFactories) { + return delegate.createConfigurationFactory(configurationFragmentFactories); + } + + @Override public ConfigurationCollectionFactory createConfigurationCollectionFactory() { return delegate.createConfigurationCollectionFactory(); } 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 680811c239..33ee6f0ca3 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 @@ -78,6 +78,7 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey; import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Options.DynamicConfigsMode; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigurationFactory; @@ -178,7 +179,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { protected BuildConfigurationCollection masterConfig; protected BuildConfiguration targetConfig; // "target" or "build" config private List<String> configurationArgs; - private boolean useDynamicConfigs; + private DynamicConfigsMode dynamicConfigsMode = DynamicConfigsMode.OFF; protected OptionsParser optionsParser; private PackageCacheOptions packageCacheOptions; @@ -200,12 +201,14 @@ public abstract class BuildViewTestCase extends FoundationTestCase { analysisMock.setupMockClient(mockToolsConfig); analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot()); - configurationFactory = analysisMock.createConfigurationFactory(); packageCacheOptions = parsePackageCacheOptions(); workspaceStatusActionFactory = new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories); mutableActionGraph = new MapBasedActionGraph(); ruleClassProvider = getRuleClassProvider(); + configurationFactory = + analysisMock.createConfigurationFactory(ruleClassProvider.getConfigurationFragments()); + pkgFactory = analysisMock .getPackageFactoryForTesting() @@ -396,9 +399,10 @@ public abstract class BuildViewTestCase extends FoundationTestCase { */ protected void useConfiguration(String... args) throws Exception { String[] actualArgs; - if (useDynamicConfigs) { + if (dynamicConfigsMode != DynamicConfigsMode.OFF) { actualArgs = Arrays.copyOf(args, args.length + 1); - actualArgs[args.length] = "--experimental_dynamic_configs=on"; + actualArgs[args.length] = "--experimental_dynamic_configs=" + + dynamicConfigsMode.toString().toLowerCase(); } else { actualArgs = args; } @@ -409,10 +413,11 @@ public abstract class BuildViewTestCase extends FoundationTestCase { } /** - * Makes subsequent {@link #useConfiguration} calls automatically enable dynamic configurations. + * Makes subsequent {@link #useConfiguration} calls automatically enable dynamic configurations + * in the specified mode. */ - protected final void useDynamicConfigurations() { - useDynamicConfigs = true; + protected final void useDynamicConfigurations(DynamicConfigsMode mode) { + dynamicConfigsMode = mode; } /** |