aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-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(