aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2016-11-17 23:14:51 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-11-18 10:54:41 +0000
commit41ad6ab0db585b49dafca9d4fca8fb8302709fd5 (patch)
tree9fc9435e7079fec0fec043cedeb54e768e82fbfe
parenta2565aa2b33273972554325a02f2a9bc30a15c62 (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
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java16
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java19
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;
}
/**