aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar mjhalupka <mjhalupka@google.com>2018-03-22 13:37:38 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-22 13:38:49 -0700
commit5d7fa7ba5d93a1fe35353b05882698b0d74d90f7 (patch)
tree3dc1c360c768c18ccdcdbc5607d98216a2a4f77b /src/test/java/com/google
parent62af2b4763510033cf824a4c6d1e59e566002361 (diff)
Add a DefaultBuildOptions specifying default build flags that may differ from the provided defaults in Options classes. These are used to create BuildOptionsDiffForReconstruction, which lets us store only the diffs in our BuildConfigurationValue.Keys.
PiperOrigin-RevId: 190117455
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD28
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java12
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java48
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/DefaultBuildOptionsForTesting.java34
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java25
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java8
20 files changed, 219 insertions, 32 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 205bf8f020..1e80aee5df 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -558,12 +558,15 @@ java_test(
java_library(
name = "analysis_testutil",
testonly = 1,
- srcs = glob([
- "analysis/LicensingTests.java",
- "analysis/mock/BazelAnalysisMock.java",
- "analysis/util/*.java",
- "exec/util/*.java",
- ]),
+ srcs = glob(
+ [
+ "analysis/LicensingTests.java",
+ "analysis/mock/BazelAnalysisMock.java",
+ "analysis/util/*.java",
+ "exec/util/*.java",
+ ],
+ exclude = ["analysis/util/DefaultBuildOptionsForTesting.java"],
+ ),
resources = [
"analysis/mock/MOCK_CROSSTOOL",
],
@@ -573,6 +576,7 @@ java_library(
],
deps = [
":actions_testutil",
+ ":default_test_build_rules",
":foundations_testutil",
":guava_junit_truth",
":packages_testutil",
@@ -625,6 +629,16 @@ java_library(
)
java_library(
+ name = "default_test_build_rules",
+ testonly = 1,
+ srcs = ["analysis/util/DefaultBuildOptionsForTesting.java"],
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:build-base",
+ "//src/main/java/com/google/devtools/common/options",
+ ],
+)
+
+java_library(
name = "integration_testutil",
testonly = 1,
srcs = glob([
@@ -821,6 +835,7 @@ java_library(
"packages/util/MOCK_OSX_CROSSTOOL",
],
deps = [
+ ":default_test_build_rules",
":foundations_testutil",
":guava_junit_truth",
":testutil",
@@ -901,6 +916,7 @@ java_test(
test_class = "com.google.devtools.build.lib.AllTests",
deps = [
":analysis_testutil",
+ ":default_test_build_rules",
":guava_junit_truth",
":packages_testutil",
":test_runner",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
index 4069c9aea1..c4566b6a0e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
import com.google.devtools.build.lib.analysis.util.TestAspects;
+import com.google.devtools.build.lib.bazel.rules.DefaultBuildOptionsForDiffing;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.Aspect;
@@ -60,7 +61,8 @@ public class DependencyResolverTest extends AnalysisTestCase {
@Before
public final void createResolver() throws Exception {
- dependencyResolver = new DependencyResolver() {
+ dependencyResolver =
+ new DependencyResolver() {
@Override
protected void invalidVisibilityReferenceHook(TargetAndConfiguration node, Label label) {
throw new IllegalStateException();
@@ -90,7 +92,9 @@ public class DependencyResolverTest extends AnalysisTestCase {
@Nullable
@Override
protected List<BuildConfiguration> getConfigurations(
- FragmentClassSet fragments, Iterable<BuildOptions> buildOptions) {
+ FragmentClassSet fragments,
+ Iterable<BuildOptions> buildOptions,
+ BuildOptions defaultBuildOptions) {
throw new UnsupportedOperationException(
"this functionality is covered by analysis-phase integration tests");
}
@@ -109,7 +113,9 @@ public class DependencyResolverTest extends AnalysisTestCase {
getHostConfiguration(),
aspect != null ? Aspect.forNative(aspect) : null,
ImmutableMap.<Label, ConfigMatchingProvider>of(),
- /*toolchainLabels=*/ ImmutableSet.of());
+ /*toolchainLabels=*/ ImmutableSet.of(),
+ DefaultBuildOptionsForDiffing.getDefaultBuildOptionsForFragments(
+ ruleClassProvider.getConfigurationOptions()));
}
@SafeVarargs
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 3df4923ea0..cf7f1e6c56 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
@@ -288,7 +288,8 @@ public class BuildConfigurationTest extends ConfigurationTestCase {
ImmutableSortedSet.orderedBy(BuildConfiguration.lexicalFragmentSorter)
.add(CppConfiguration.class)
.build()),
- analysisMock.createRuleClassProvider());
+ analysisMock.createRuleClassProvider(),
+ skyframeExecutor.getDefaultBuildOptions());
BuildConfiguration hostConfig = createHost();
assertThat(config.equalsOrIsSupersetOf(trimmedConfig)).isTrue();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java
index 9c796eff51..421db8e93c 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java
@@ -14,9 +14,11 @@
package com.google.devtools.build.lib.analysis.config;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.devtools.build.lib.testutil.MoreAsserts.assertThrows;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.config.BuildOptions.OptionsDiff;
+import com.google.devtools.build.lib.analysis.config.BuildOptions.OptionsDiffForReconstruction;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
import com.google.devtools.common.options.OptionsParser;
import org.junit.Test;
@@ -103,6 +105,52 @@ public class BuildOptionsTest {
}
@Test
+ public void optionsDiff_nullOptionsThrow() throws Exception {
+ BuildOptions one = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=opt", "cpu=k8");
+ BuildOptions two = null;
+ IllegalArgumentException e =
+ assertThrows(IllegalArgumentException.class, () -> BuildOptions.diff(one, two));
+ assertThat(e).hasMessageThat().contains("Cannot diff null BuildOptions");
+ }
+
+ @Test
+ public void optionsDiff_nullSecondValue() throws Exception {
+ BuildOptions one = BuildOptions.of(ImmutableList.of(CppOptions.class), "--compiler=gcc");
+ BuildOptions two = BuildOptions.of(ImmutableList.of(CppOptions.class));
+ OptionsDiffForReconstruction diffForReconstruction =
+ BuildOptions.diffForReconstruction(one, two);
+ OptionsDiff diff = BuildOptions.diff(one, two);
+ assertThat(diff.areSame()).isFalse();
+ assertThat(diff.getSecond().values()).contains(null);
+ BuildOptions reconstructed = one.applyDiff(diffForReconstruction);
+ assertThat(reconstructed.get(CppOptions.class).cppCompiler).isNull();
+ }
+
+ @Test
+ public void optionsDiff_differentBaseThrowException() throws Exception {
+ BuildOptions one = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=opt", "cpu=k8");
+ BuildOptions two = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=dbg", "cpu=k8");
+ BuildOptions three = BuildOptions.of(ImmutableList.of(CppOptions.class), "--compiler=gcc");
+ OptionsDiffForReconstruction diffForReconstruction =
+ BuildOptions.diffForReconstruction(one, two);
+ IllegalArgumentException e =
+ assertThrows(IllegalArgumentException.class, () -> three.applyDiff(diffForReconstruction));
+ assertThat(e)
+ .hasMessageThat()
+ .contains("Can not reconstruct BuildOptions with a different base");
+ }
+
+ @Test
+ public void optionsDiff_getEmptyAndApplyEmpty() throws Exception {
+ BuildOptions one = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=opt", "cpu=k8");
+ BuildOptions two = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=opt", "cpu=k8");
+ OptionsDiffForReconstruction diffForReconstruction =
+ BuildOptions.diffForReconstruction(one, two);
+ BuildOptions reconstructed = one.applyDiff(diffForReconstruction);
+ assertThat(one).isEqualTo(reconstructed);
+ }
+
+ @Test
public void applyDiff() throws Exception {
BuildOptions one = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=opt", "cpu=k8");
BuildOptions two = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=dbg", "cpu=k8");
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 faf596966b..6c7f29319a 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
@@ -183,7 +183,8 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
}
/**
@@ -196,6 +197,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
analysisMock
.getPackageFactoryBuilderForTesting(directories)
.build(ruleClassProvider, scratch.getFileSystem());
+ useConfiguration();
skyframeExecutor =
createSkyframeExecutor(pkgFactory, ruleClassProvider.getBuildInfoFactories());
@@ -220,7 +222,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
loadingPhaseRunner = skyframeExecutor.getLoadingPhaseRunner(
pkgFactory.getRuleClassNames(), defaultFlags().contains(Flag.SKYFRAME_LOADING_PHASE));
buildView = new BuildView(directories, ruleClassProvider, skyframeExecutor, null);
- useConfiguration();
+
}
protected AnalysisMock getAnalysisMock() {
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 052f618d89..6dbd8e0794 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
@@ -256,7 +256,8 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
skyframeExecutor.injectExtraPrecomputedValues(extraPrecomputedValues);
packageCacheOptions.defaultVisibility = ConstantRuleVisibility.PUBLIC;
@@ -476,7 +477,10 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
masterConfig = createConfigurations(actualArgs);
targetConfig = getTargetConfiguration();
targetConfigKey =
- BuildConfigurationValue.key(targetConfig.fragmentClasses(), targetConfig.getOptions());
+ BuildConfigurationValue.key(
+ targetConfig.fragmentClasses(),
+ BuildOptions.diffForReconstruction(
+ skyframeExecutor.getDefaultBuildOptions(), targetConfig.getOptions()));
configurationArgs = Arrays.asList(actualArgs);
createBuildView();
}
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 ab725a9223..af23651dfd 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
@@ -115,7 +115,6 @@ public abstract class ConfigurationTestCase extends FoundationTestCase {
.build(ruleClassProvider, scratch.getFileSystem());
AnalysisTestUtil.DummyWorkspaceStatusActionFactory workspaceStatusActionFactory =
new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories);
-
skyframeExecutor =
SequencedSkyframeExecutor.create(
pkgFactory,
@@ -131,7 +130,8 @@ public abstract class ConfigurationTestCase extends FoundationTestCase {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
skyframeExecutor.injectExtraPrecomputedValues(ImmutableList.of(PrecomputedValue.injected(
RepositoryDelegatorFunction.REPOSITORY_OVERRIDES,
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultBuildOptionsForTesting.java b/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultBuildOptionsForTesting.java
new file mode 100644
index 0000000000..1f3b75c231
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/DefaultBuildOptionsForTesting.java
@@ -0,0 +1,34 @@
+// Copyright 2018 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.util;
+
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.common.options.OptionsParsingException;
+
+/**
+ * Static helper to provide {@link BuildOptions} that are used as default build options in tests.
+ */
+public class DefaultBuildOptionsForTesting {
+
+ public static BuildOptions getDefaultBuildOptionsForTest(
+ ConfiguredRuleClassProvider ruleClassProvider) {
+ try {
+ return BuildOptions.of(ruleClassProvider.getConfigurationOptions());
+ } catch (OptionsParsingException e) {
+ throw new IllegalArgumentException("Failed to create default BuildOptions for test", e);
+ }
+ }
+}
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 90578ed361..e43be1dc51 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
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.ServerDirectories;
+import com.google.devtools.build.lib.analysis.util.DefaultBuildOptionsForTesting;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
@@ -125,7 +126,8 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
return skyframeExecutor;
}
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
index 1f3354e8ce..be5068bd2d 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
+import com.google.devtools.build.lib.analysis.util.DefaultBuildOptionsForTesting;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.Package;
@@ -95,7 +96,8 @@ public class BuildFileModificationTest extends FoundationTestCase {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
OptionsParser parser = OptionsParser.newOptionsParser(
PackageCacheOptions.class, SkylarkSemanticsOptions.class);
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 569230190c..1a00c8110a 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
@@ -23,7 +23,9 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.ActionKeyContext;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
+import com.google.devtools.build.lib.analysis.util.DefaultBuildOptionsForTesting;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.Reporter;
@@ -470,11 +472,12 @@ public class IncrementalLoadingTest {
fs.getPath("/install"), fs.getPath("/output"), fs.getPath("/userRoot")),
workspace,
loadingMock.getProductName());
+ ConfiguredRuleClassProvider ruleClassProvider = loadingMock.createRuleClassProvider();
skyframeExecutor =
SequencedSkyframeExecutor.create(
loadingMock
.getPackageFactoryBuilderForTesting(directories)
- .build(loadingMock.createRuleClassProvider(), fs),
+ .build(ruleClassProvider, fs),
fs,
directories,
actionKeyContext,
@@ -487,7 +490,8 @@ public class IncrementalLoadingTest {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
PackageCacheOptions packageCacheOptions = Options.getDefaults(PackageCacheOptions.class);
packageCacheOptions.defaultVisibility = ConstantRuleVisibility.PUBLIC;
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 de8523eecf..e7c6535447 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
@@ -31,6 +31,7 @@ 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.ServerDirectories;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
@@ -727,6 +728,12 @@ public class LoadingPhaseRunnerTest {
analysisMock.getPackageFactoryBuilderForTesting(directories).build(ruleClassProvider, fs);
PackageCacheOptions options = Options.getDefaults(PackageCacheOptions.class);
storedErrors = new StoredEventHandler();
+ BuildOptions defaultBuildOptions;
+ try {
+ defaultBuildOptions = BuildOptions.of(ImmutableList.of());
+ } catch (OptionsParsingException e) {
+ throw new RuntimeException(e);
+ }
skyframeExecutor =
SequencedSkyframeExecutor.create(
pkgFactory,
@@ -742,7 +749,8 @@ public class LoadingPhaseRunnerTest {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ defaultBuildOptions);
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
PathPackageLocator pkgLocator =
PathPackageLocator.create(
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 4863530e00..85ac153f46 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
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.ActionKeyContext;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.cmdline.Label;
@@ -91,6 +92,12 @@ public class PackageCacheTest extends FoundationTestCase {
if (!doPackageLoadingChecks) {
packageFactoryBuilder.disableChecks();
}
+ BuildOptions defaultBuildOptions;
+ try {
+ defaultBuildOptions = BuildOptions.of(ImmutableList.of());
+ } catch (OptionsParsingException e) {
+ throw new RuntimeException(e);
+ }
skyframeExecutor =
SequencedSkyframeExecutor.create(
packageFactoryBuilder.build(ruleClassProvider, fileSystem),
@@ -106,7 +113,8 @@ public class PackageCacheTest extends FoundationTestCase {
BazelSkyframeExecutorConstants.ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE,
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ defaultBuildOptions);
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
setUpSkyframe(parsePackageCacheOptions(), parseSkylarkSemanticsOptions());
}
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 32a0879040..3582a2d87f 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
@@ -25,7 +25,9 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
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;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
+import com.google.devtools.build.lib.bazel.rules.DefaultBuildOptionsForDiffing;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.testutil.TestConstants;
@@ -155,6 +157,14 @@ public class BlazeCommandDispatcherRcoptionsTest {
builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
}
})
+ .addBlazeModule(
+ new BlazeModule() {
+ @Override
+ public BuildOptions getDefaultBuildOptions(BlazeRuntime runtime) {
+ return DefaultBuildOptionsForDiffing.getDefaultBuildOptionsForFragments(
+ runtime.getRuleClassProvider().getConfigurationOptions());
+ }
+ })
.build();
BlazeDirectories directories =
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
index 9ff8d76bda..69b912dde6 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
@@ -633,6 +633,9 @@ public class BuildEventStreamerTest extends FoundationTestCase {
BuildEventStreamer streamer =
new BuildEventStreamer(ImmutableSet.<BuildEventTransport>of(transport), reporter);
+ BuildOptions defaultBuildOptions =
+ BuildOptions.of(
+ ImmutableList.<Class<? extends FragmentOptions>>of(BuildConfiguration.Options.class));
BuildEvent startEvent =
new GenericBuildEvent(
testId("Initial"),
@@ -645,9 +648,8 @@ public class BuildEventStreamerTest extends FoundationTestCase {
"productName"),
ImmutableMap
.<Class<? extends BuildConfiguration.Fragment>, BuildConfiguration.Fragment>of(),
- BuildOptions.of(
- ImmutableList.<Class<? extends FragmentOptions>>of(
- BuildConfiguration.Options.class)),
+ defaultBuildOptions,
+ BuildOptions.diffForReconstruction(defaultBuildOptions, defaultBuildOptions),
"workspace");
BuildEvent firstWithConfiguration =
new GenericConfigurationEvent(testId("first"), configuration.toBuildEvent());
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 de38e15cec..71948daa5f 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
@@ -22,6 +22,8 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
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;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.bazel.rules.DefaultBuildOptionsForDiffing;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestUtils;
@@ -367,6 +369,14 @@ public final class CommandInterruptionTest {
builder.addConfigurationOptions(BuildConfiguration.Options.class);
}
})
+ .addBlazeModule(
+ new BlazeModule() {
+ @Override
+ public BuildOptions getDefaultBuildOptions(BlazeRuntime runtime) {
+ return DefaultBuildOptionsForDiffing.getDefaultBuildOptionsForFragments(
+ runtime.getRuleClassProvider().getConfigurationOptions());
+ }
+ })
.build();
snooze = new WaitForCompletionCommand(isTestShuttingDown);
dispatcher = new BlazeCommandDispatcher(runtime, snooze);
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java b/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java
index 4a45e7d10f..d2235c8d7f 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/commands/CleanCommandRecommendsAsyncTest.java
@@ -20,6 +20,8 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
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;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.bazel.rules.DefaultBuildOptionsForDiffing;
import com.google.devtools.build.lib.runtime.BlazeCommandDispatcher;
import com.google.devtools.build.lib.runtime.BlazeModule;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
@@ -98,6 +100,14 @@ public class CleanCommandRecommendsAsyncTest {
builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
}
})
+ .addBlazeModule(
+ new BlazeModule() {
+ @Override
+ public BuildOptions getDefaultBuildOptions(BlazeRuntime runtime) {
+ return DefaultBuildOptionsForDiffing.getDefaultBuildOptionsForFragments(
+ runtime.getRuleClassProvider().getConfigurationOptions());
+ }
+ })
.build();
BlazeDirectories directories =
new BlazeDirectories(serverDirectories, scratch.dir("workspace"), productName);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
index 3896f0a261..56c1647776 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -89,6 +89,7 @@ java_test(
"//src/main/protobuf:action_cache_java_proto",
"//src/test/java/com/google/devtools/build/lib:actions_testutil",
"//src/test/java/com/google/devtools/build/lib:analysis_testutil",
+ "//src/test/java/com/google/devtools/build/lib:default_test_build_rules",
"//src/test/java/com/google/devtools/build/lib:foundations_testutil",
"//src/test/java/com/google/devtools/build/lib:packages_testutil",
"//src/test/java/com/google/devtools/build/lib:testutil",
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java
index f1f4b367a1..dfb5adb1e8 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.skyframe;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;
+import com.google.common.base.Supplier;
import com.google.common.base.VerifyException;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Collections2;
@@ -33,6 +34,7 @@ import com.google.devtools.build.lib.analysis.Dependency;
import com.google.devtools.build.lib.analysis.DependencyResolver;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
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.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
@@ -93,9 +95,13 @@ public class ConfigurationsForTargetsTest extends AnalysisTestCase {
SkyFunctionName.create("CONFIGURED_TARGET_FUNCTION_COMPUTE_DEPENDENCIES");
private final LateBoundStateProvider stateProvider;
+ private final Supplier<BuildOptions> buildOptionsSupplier;
- ComputeDependenciesFunction(LateBoundStateProvider lateBoundStateProvider) {
+ ComputeDependenciesFunction(
+ LateBoundStateProvider lateBoundStateProvider,
+ Supplier<BuildOptions> buildOptionsSupplier) {
this.stateProvider = lateBoundStateProvider;
+ this.buildOptionsSupplier = buildOptionsSupplier;
}
/** Returns a {@link SkyKey} for a given <Target, BuildConfiguration> pair. */
@@ -141,7 +147,8 @@ public class ConfigurationsForTargetsTest extends AnalysisTestCase {
stateProvider.lateBoundRuleClassProvider(),
stateProvider.lateBoundHostConfig(),
NestedSetBuilder.<Package>stableOrder(),
- NestedSetBuilder.<Label>stableOrder());
+ NestedSetBuilder.<Label>stableOrder(),
+ buildOptionsSupplier.get());
return env.valuesMissing() ? null : new Value(depMap);
} catch (RuntimeException e) {
throw e;
@@ -183,9 +190,13 @@ public class ConfigurationsForTargetsTest extends AnalysisTestCase {
*/
private static final class AnalysisMockWithComputeDepsFunction extends AnalysisMock.Delegate {
private final LateBoundStateProvider stateProvider;
- AnalysisMockWithComputeDepsFunction(LateBoundStateProvider stateProvider) {
+ private final Supplier<BuildOptions> defaultBuildOptions;
+
+ AnalysisMockWithComputeDepsFunction(
+ LateBoundStateProvider stateProvider, Supplier<BuildOptions> defaultBuildOptions) {
super(AnalysisMock.get());
this.stateProvider = stateProvider;
+ this.defaultBuildOptions = defaultBuildOptions;
}
@Override
@@ -195,14 +206,18 @@ public class ConfigurationsForTargetsTest extends AnalysisTestCase {
.putAll(super.getSkyFunctions(directories))
.put(
ComputeDependenciesFunction.SKYFUNCTION_NAME,
- new ComputeDependenciesFunction(stateProvider))
+ new ComputeDependenciesFunction(stateProvider, defaultBuildOptions))
.build();
}
};
@Override
protected AnalysisMock getAnalysisMock() {
- return new AnalysisMockWithComputeDepsFunction(new LateBoundStateProvider());
+ return new AnalysisMockWithComputeDepsFunction(
+ new LateBoundStateProvider(),
+ () -> {
+ return skyframeExecutor.getDefaultBuildOptions();
+ });
}
/**
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
index 4c56419cc6..27ae6a9c6a 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionSmartNegationTest.java
@@ -22,8 +22,10 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.ActionKeyContext;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
+import com.google.devtools.build.lib.analysis.util.DefaultBuildOptionsForTesting;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -73,11 +75,12 @@ public class PrepareDepsOfPatternsFunctionSmartNegationTest extends FoundationTe
getScratch().dir("/user_root")),
rootDirectory,
AnalysisMock.get().getProductName());
+ ConfiguredRuleClassProvider ruleClassProvider = AnalysisMock.get().createRuleClassProvider();
skyframeExecutor =
SequencedSkyframeExecutor.create(
AnalysisMock.get()
.getPackageFactoryBuilderForTesting(directories)
- .build(AnalysisMock.get().createRuleClassProvider(), fileSystem),
+ .build(ruleClassProvider, fileSystem),
fileSystem,
directories,
new ActionKeyContext(),
@@ -90,7 +93,8 @@ public class PrepareDepsOfPatternsFunctionSmartNegationTest extends FoundationTe
PathFragment.create(ADDITIONAL_BLACKLISTED_PACKAGE_PREFIXES_FILE_PATH_STRING),
BazelSkyframeExecutorConstants.CROSS_REPOSITORY_LABEL_VIOLATION_STRATEGY,
BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY,
- BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE);
+ BazelSkyframeExecutorConstants.ACTION_ON_IO_EXCEPTION_READING_BUILD_FILE,
+ DefaultBuildOptionsForTesting.getDefaultBuildOptionsForTest(ruleClassProvider));
TestConstants.processSkyframeExecutorForTesting(skyframeExecutor);
skyframeExecutor.preparePackageLoading(
new PathPackageLocator(