aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/BUILD9
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/ToolchainTestCase.java38
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/DefaultToolchainTest.java49
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java34
7 files changed, 101 insertions, 35 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
index fb96bcdbc5..6a53a5a34a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
@@ -60,7 +60,7 @@ public class PlatformOptions extends FragmentOptions {
@Option(
name = "extra_toolchains",
converter = LabelListConverter.class,
- defaultValue = "@bazel_tools//tools/cpp:dummy_cc_toolchain",
+ defaultValue = "",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
effectTags = {OptionEffectTag.UNKNOWN},
metadataTags = {OptionMetadataTag.HIDDEN},
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 54bfabc689..c9749efa91 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -215,6 +215,8 @@ public class BazelRuleClassProvider {
builder.addConfigurationFragment(new BazelConfiguration.Loader());
builder.addConfigurationOptions(BazelConfiguration.Options.class);
builder.addConfigurationOptions(BuildConfiguration.Options.class);
+ builder.addWorkspaceFileSuffix(
+ "register_toolchains('@bazel_tools//tools/cpp:dummy_cc_toolchain')\n");
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index 7e6b7acae8..56477bdbcd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -610,7 +610,7 @@ public final class SkyframeBuildView {
* #createConfiguredTarget}, and false immediately after the call. Use it to fail-fast in the case
* that a target is requested for analysis not during the analysis phase.
*/
- void enableAnalysis(boolean enable) {
+ public void enableAnalysis(boolean enable) {
this.enableAnalysis = enable;
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD b/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
index 6a3bab0083..704fcb4ea2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
@@ -28,8 +28,12 @@ java_test(
"//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/analysis/platform:utils",
"//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/collect",
+ "//src/main/java/com/google/devtools/build/skyframe",
+ "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
"//src/test/java/com/google/devtools/build/lib:analysis_testutil",
"//src/test/java/com/google/devtools/build/lib:packages_testutil",
+ "//src/test/java/com/google/devtools/build/lib/skyframe:testutil",
"//src/test/java/com/google/devtools/build/lib/skylark:testutil",
"//third_party:guava",
"//third_party:guava-testlib",
@@ -43,9 +47,14 @@ java_library(
srcs = TESTUTIL_SRCS,
visibility = ["//src/test/java/com/google/devtools/build/lib:__subpackages__"],
deps = [
+ "//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/skyframe",
+ "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
+ "//src/test/java/com/google/devtools/build/lib/skyframe:testutil",
"//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+ "//third_party:guava",
"//third_party:junit4",
"//third_party:truth",
],
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/ToolchainTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/platform/ToolchainTestCase.java
index 23e92db4c1..77a9daa331 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/ToolchainTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/ToolchainTestCase.java
@@ -14,11 +14,22 @@
package com.google.devtools.build.lib.rules.platform;
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.truth.IterableSubject;
import com.google.devtools.build.lib.analysis.platform.ConstraintSettingInfo;
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
+import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.skyframe.RegisteredToolchainsValue;
+import com.google.devtools.build.lib.skyframe.util.SkyframeExecutorTestUtils;
import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
+import com.google.devtools.build.skyframe.EvaluationResult;
+import com.google.devtools.build.skyframe.SkyKey;
+import java.util.List;
+import java.util.stream.Collectors;
import org.junit.Before;
/** Utility methods for setting up platform and toolchain related tests. */
@@ -33,6 +44,22 @@ public abstract class ToolchainTestCase extends SkylarkTestCase {
public Label testToolchainType;
+ protected static IterableSubject assertToolchainLabels(
+ RegisteredToolchainsValue registeredToolchainsValue) {
+ assertThat(registeredToolchainsValue).isNotNull();
+ ImmutableList<DeclaredToolchainInfo> declaredToolchains =
+ registeredToolchainsValue.registeredToolchains();
+ List<Label> labels = collectToolchainLabels(declaredToolchains);
+ return assertThat(labels);
+ }
+
+ protected static List<Label> collectToolchainLabels(List<DeclaredToolchainInfo> toolchains) {
+ return toolchains
+ .stream()
+ .map((toolchain -> toolchain.toolchainLabel()))
+ .collect(Collectors.toList());
+ }
+
@Before
public void createConstraints() throws Exception {
scratch.file(
@@ -102,4 +129,15 @@ public abstract class ToolchainTestCase extends SkylarkTestCase {
testToolchainType = makeLabel("//toolchain:test_toolchain");
}
+
+ protected EvaluationResult<RegisteredToolchainsValue> requestToolchainsFromSkyframe(
+ SkyKey toolchainsKey) throws InterruptedException {
+ try {
+ getSkyframeExecutor().getSkyframeBuildView().enableAnalysis(true);
+ return SkyframeExecutorTestUtils.evaluate(
+ getSkyframeExecutor(), toolchainsKey, /*keepGoing=*/ false, reporter);
+ } finally {
+ getSkyframeExecutor().getSkyframeBuildView().enableAnalysis(false);
+ }
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/DefaultToolchainTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/DefaultToolchainTest.java
new file mode 100644
index 0000000000..bd6c8ccec0
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/DefaultToolchainTest.java
@@ -0,0 +1,49 @@
+// Copyright 2017 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.skyframe;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.rules.platform.ToolchainTestCase;
+import com.google.devtools.build.skyframe.EvaluationResult;
+import com.google.devtools.build.skyframe.SkyKey;
+import java.util.List;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for default toolchains. */
+@RunWith(JUnit4.class)
+public class DefaultToolchainTest extends ToolchainTestCase {
+ @Test
+ public void testDefaultCcToolchainIsPresent() throws Exception {
+ SkyKey toolchainKey = RegisteredToolchainsValue.key(targetConfig);
+ EvaluationResult<RegisteredToolchainsValue> result =
+ requestToolchainsFromSkyframe(toolchainKey);
+ ImmutableList<DeclaredToolchainInfo> declaredToolchains =
+ result.get(toolchainKey).registeredToolchains();
+ List<Label> labels = collectToolchainLabels(declaredToolchains);
+ assertThat(
+ labels
+ .stream()
+ .anyMatch(
+ toolchainLabel ->
+ toolchainLabel.toString().contains("//tools/cpp:dummy_cc_toolchain_impl")))
+ .isTrue();
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java
index 0c4996ecf8..6ffa290a20 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java
@@ -19,15 +19,10 @@ import static com.google.devtools.build.skyframe.EvaluationResultSubjectFactory.
import com.google.common.collect.ImmutableList;
import com.google.common.testing.EqualsTester;
-import com.google.common.truth.IterableSubject;
import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
-import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.platform.ToolchainTestCase;
-import com.google.devtools.build.lib.skyframe.util.SkyframeExecutorTestUtils;
import com.google.devtools.build.skyframe.EvaluationResult;
import com.google.devtools.build.skyframe.SkyKey;
-import java.util.List;
-import java.util.stream.Collectors;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -36,17 +31,6 @@ import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class RegisteredToolchainsFunctionTest extends ToolchainTestCase {
- private EvaluationResult<RegisteredToolchainsValue> requestToolchainsFromSkyframe(
- SkyKey toolchainsKey) throws InterruptedException {
- try {
- getSkyframeExecutor().getSkyframeBuildView().enableAnalysis(true);
- return SkyframeExecutorTestUtils.evaluate(
- getSkyframeExecutor(), toolchainsKey, /*keepGoing=*/ false, reporter);
- } finally {
- getSkyframeExecutor().getSkyframeBuildView().enableAnalysis(false);
- }
- }
-
@Test
public void testRegisteredToolchains() throws Exception {
// Request the toolchains.
@@ -100,7 +84,7 @@ public class RegisteredToolchainsFunctionTest extends ToolchainTestCase {
// Verify that the target registered with the extra_toolchains flag is first in the list.
assertToolchainLabels(result.get(toolchainsKey))
- .containsExactly(
+ .containsAllOf(
makeLabel("//extra:extra_toolchain_impl"), makeLabel("//toolchain:test_toolchain_1"))
.inOrder();
}
@@ -168,20 +152,4 @@ public class RegisteredToolchainsFunctionTest extends ToolchainTestCase {
RegisteredToolchainsValue.create(ImmutableList.of(toolchain2)),
RegisteredToolchainsValue.create(ImmutableList.of(toolchain2, toolchain1)));
}
-
- private static IterableSubject assertToolchainLabels(
- RegisteredToolchainsValue registeredToolchainsValue) {
- assertThat(registeredToolchainsValue).isNotNull();
- ImmutableList<DeclaredToolchainInfo> declaredToolchains =
- registeredToolchainsValue.registeredToolchains();
- List<Label> labels = collectToolchainLabels(declaredToolchains);
- return assertThat(labels);
- }
-
- private static List<Label> collectToolchainLabels(List<DeclaredToolchainInfo> toolchains) {
- return toolchains
- .stream()
- .map((toolchain -> toolchain.toolchainLabel()))
- .collect(Collectors.toList());
- }
}