diff options
author | cpeyser <cpeyser@google.com> | 2017-09-27 11:25:32 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-09-28 08:54:19 -0400 |
commit | a5d95127aae787769ae61fca323c143d1e21c558 (patch) | |
tree | aae0a34d6ead498252a85b360ed5982de7fe3af4 /src/test/java/com | |
parent | 3f6e857042b4d2e9f6b006b22e63ad758939305f (diff) |
Mock cc toolchain is registered in module instead of in PlatformOptions.
PiperOrigin-RevId: 170200236
Diffstat (limited to 'src/test/java/com')
4 files changed, 97 insertions, 33 deletions
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()); - } } |