diff options
author | 2017-05-17 16:14:02 +0200 | |
---|---|---|
committer | 2017-05-19 15:07:35 +0200 | |
commit | 137760bf6283473fa116041aeef4ef8bb52b9c2e (patch) | |
tree | f62f7c5578b2637dbdf00a4b4825c9032683b2e4 /src/test/java/com | |
parent | 1e54a595b1abd96be76ca2b5d0a7e840ead172a3 (diff) |
Adds ToolchainConstructor interface and implementations.
ToolchainConstructor is used to create instances of ToolchainInfo, for
toolchain-aware rule sets.
Part of #2219.
Change-Id: Iae4e519b156910cc28704b3ca5b11e57dd561107
PiperOrigin-RevId: 156303854
Diffstat (limited to 'src/test/java/com')
4 files changed, 39 insertions, 13 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD index 5993fc5516..1e752eeab8 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD @@ -11,6 +11,7 @@ java_test( deps = [ "//src/main/java/com/google/devtools/build/lib:events", "//src/main/java/com/google/devtools/build/lib:os_util", + "//src/main/java/com/google/devtools/build/lib:packages-internal", "//src/main/java/com/google/devtools/build/lib:syntax", "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib/analysis/platform", diff --git a/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java b/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java index 235532c2d8..35f60cd662 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.testing.EqualsTester; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.packages.ClassObjectConstructor; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -108,6 +109,7 @@ public class PlatformProvidersTest extends BuildViewTestCase { @Test public void toolchainInfo_equalsTester() throws Exception { + ClassObjectConstructor.Key key = new ClassObjectConstructor.Key() {}; ConstraintSettingInfo setting1 = ConstraintSettingInfo.create(makeLabel("//constraint:basic")); ConstraintSettingInfo setting2 = ConstraintSettingInfo.create(makeLabel("//constraint:other")); @@ -122,11 +124,21 @@ public class PlatformProvidersTest extends BuildViewTestCase { .addEqualityGroup( // Base case. new ToolchainInfo( + key, ImmutableList.of(value1, value2), ImmutableList.of(value1, value3), ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"), Location.BUILTIN), new ToolchainInfo( + key, + ImmutableList.of(value1, value2), + ImmutableList.of(value1, value3), + ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"), + Location.BUILTIN)) + .addEqualityGroup( + // Different type. + new ToolchainInfo( + new ClassObjectConstructor.Key() {}, ImmutableList.of(value1, value2), ImmutableList.of(value1, value3), ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"), @@ -134,6 +146,7 @@ public class PlatformProvidersTest extends BuildViewTestCase { .addEqualityGroup( // Different target constraints. new ToolchainInfo( + key, ImmutableList.of(value1, value2), ImmutableList.of(value1, value2), ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"), @@ -141,6 +154,7 @@ public class PlatformProvidersTest extends BuildViewTestCase { .addEqualityGroup( // Different data. new ToolchainInfo( + key, ImmutableList.of(value1, value2), ImmutableList.of(value1, value3), ImmutableMap.<String, Object>of("foo", "val1", "bar", "val3"), 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 daf896eea9..981b5b15f2 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 @@ -11,6 +11,7 @@ java_test( deps = [ "//src/main/java/com/google/devtools/build/lib:build-base", "//src/main/java/com/google/devtools/build/lib:os_util", + "//src/main/java/com/google/devtools/build/lib:packages-internal", "//src/main/java/com/google/devtools/build/lib:syntax", "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib/analysis/platform", diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java index f3cd8255b1..dc04069f97 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java @@ -17,11 +17,11 @@ package com.google.devtools.build.lib.rules.platform; import static com.google.common.truth.Truth.assertThat; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; 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.ToolchainInfo; +import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor; import com.google.devtools.build.lib.skylark.util.SkylarkTestCase; -import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -31,20 +31,21 @@ import org.junit.runners.JUnit4; public class PlatformCommonTest extends SkylarkTestCase { @Test - public void testCreateToolchain() throws Exception { + public void testCreateToolchainType() throws Exception { scratch.file( - "test/toolchain.bzl", + "test/toolchain_type.bzl", + "test_toolchain_type = platform_common.toolchain_type()", "def _impl(ctx):", - " return platform_common.toolchain(", + " toolchain = test_toolchain_type(", " exec_compatible_with = ctx.attr.exec_compatible_with,", " target_compatible_with = ctx.attr.target_compatible_with,", " extra_label = ctx.attr.extra_label,", " extra_str = ctx.attr.extra_str,", " )", + " return [toolchain]", "test_toolchain = rule(", " implementation = _impl,", " attrs = {", - " 'runs': attr.label_list(allow_files=True),", " 'exec_compatible_with': attr.label_list(", " providers = [platform_common.ConstraintValueInfo]),", " 'target_compatible_with': attr.label_list(", @@ -55,7 +56,7 @@ public class PlatformCommonTest extends SkylarkTestCase { ")"); scratch.file( "test/BUILD", - "load(':toolchain.bzl', 'test_toolchain')", + "load(':toolchain_type.bzl', 'test_toolchain')", "constraint_setting(name = 'os')", "constraint_value(name = 'linux',", " constraint_setting = ':os')", @@ -73,20 +74,29 @@ public class PlatformCommonTest extends SkylarkTestCase { " extra_label = ':dep_rule',", " extra_str = 'bar',", ")"); - TransitiveInfoCollection toolchainProvider = getConfiguredTarget("//test:linux_toolchain"); - assertThat(toolchainProvider).isNotNull(); - assertThat((List<?>) toolchainProvider.get("exec_compatible_with")) + ConfiguredTarget configuredTarget = getConfiguredTarget("//test:linux_toolchain"); + ToolchainInfo toolchainInfo = + (ToolchainInfo) configuredTarget.get(ToolchainInfo.SKYLARK_IDENTIFIER); + assertThat(toolchainInfo).isNotNull(); + + assertThat(toolchainInfo.toolchainConstructorKey()).isNotNull(); + assertThat(toolchainInfo.toolchainConstructorKey()) + .isEqualTo( + new SkylarkClassObjectConstructor.SkylarkKey( + makeLabel("//test:toolchain_type.bzl"), "test_toolchain_type")); + + assertThat(toolchainInfo.execConstraints()) .containsExactly( ConstraintValueInfo.create( ConstraintSettingInfo.create(makeLabel("//test:os")), makeLabel("//test:linux"))); - assertThat((List<?>) toolchainProvider.get("target_compatible_with")) + assertThat(toolchainInfo.targetConstraints()) .containsExactly( ConstraintValueInfo.create( ConstraintSettingInfo.create(makeLabel("//test:os")), makeLabel("//test:mac"))); - assertThat(((ConfiguredTarget) toolchainProvider.get("extra_label")).getLabel()) + assertThat(((ConfiguredTarget) toolchainInfo.getValue("extra_label")).getLabel()) .isEqualTo(makeLabel("//test:dep_rule")); - assertThat(toolchainProvider.get("extra_str")).isEqualTo("bar"); + assertThat(toolchainInfo.getValue("extra_str")).isEqualTo("bar"); } } |