aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/platform
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-04-05 14:54:40 +0000
committerGravatar Marcel Hlopko <hlopko@google.com>2017-04-06 10:59:46 +0200
commit96580a4f0536dd9fd73f016939e977e76571194f (patch)
tree37375b06cfe5581311266579edbb05435d800abe /src/test/java/com/google/devtools/build/lib/rules/platform
parent2fcd79a76b675ec9ef7c875496a35b529b0e19e1 (diff)
Expose platform-related providers to Skylark.
Change-Id: I7615d3e6e33e0c48f18b2506a135f45ce3705a38 PiperOrigin-RevId: 152256914
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/platform')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java56
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java89
2 files changed, 107 insertions, 38 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java
index 6c2f959ea3..13539db4bc 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java
@@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -27,8 +28,8 @@ import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class ConstraintTest extends BuildViewTestCase {
- @Test
- public void testConstraint() throws Exception {
+ @Before
+ public void createConstraints() throws Exception {
scratch.file(
"constraint/BUILD",
"constraint_setting(name = 'basic')",
@@ -38,23 +39,60 @@ public class ConstraintTest extends BuildViewTestCase {
"constraint_value(name = 'bar',",
" constraint_setting = ':basic',",
" )");
+ }
+
+ @Test
+ public void testConstraint() throws Exception {
ConfiguredTarget setting = getConfiguredTarget("//constraint:basic");
assertThat(setting).isNotNull();
- assertThat(setting.getProvider(ConstraintSettingProvider.class)).isNotNull();
- assertThat(setting.getProvider(ConstraintSettingProvider.class).constraintSetting())
+ assertThat(ConstraintSettingInfo.fromTarget(setting)).isNotNull();
+ assertThat(ConstraintSettingInfo.fromTarget(setting)).isNotNull();
+ assertThat(ConstraintSettingInfo.fromTarget(setting).label())
.isEqualTo(Label.parseAbsolute("//constraint:basic"));
ConfiguredTarget fooValue = getConfiguredTarget("//constraint:foo");
assertThat(fooValue).isNotNull();
- assertThat(fooValue.getProvider(ConstraintValueProvider.class)).isNotNull();
- assertThat(fooValue.getProvider(ConstraintValueProvider.class).constraint().constraintSetting())
+ assertThat(ConstraintValueInfo.fromTarget(fooValue)).isNotNull();
+ assertThat(ConstraintValueInfo.fromTarget(fooValue).constraint().label())
.isEqualTo(Label.parseAbsolute("//constraint:basic"));
- assertThat(fooValue.getProvider(ConstraintValueProvider.class).value())
+ assertThat(ConstraintValueInfo.fromTarget(fooValue).label())
.isEqualTo(Label.parseAbsolute("//constraint:foo"));
ConfiguredTarget barValue = getConfiguredTarget("//constraint:bar");
assertThat(barValue).isNotNull();
- assertThat(barValue.getProvider(ConstraintValueProvider.class).constraint().constraintSetting())
+ assertThat(ConstraintValueInfo.fromTarget(barValue).constraint().label())
.isEqualTo(Label.parseAbsolute("//constraint:basic"));
- assertThat(barValue.getProvider(ConstraintValueProvider.class).value())
+ assertThat(ConstraintValueInfo.fromTarget(barValue).label())
.isEqualTo(Label.parseAbsolute("//constraint:bar"));
}
+
+ @Test
+ public void testConstraint_skylark() throws Exception {
+
+ scratch.file(
+ "test/platform/constraints.bzl",
+ "def _impl(ctx):",
+ " constraint_value = ctx.attr.constraint[platform_common.ConstraintValueInfo]",
+ " return struct(",
+ " setting = constraint_value.constraint.label,",
+ " value = constraint_value.label)",
+ "my_rule = rule(",
+ " _impl,",
+ " attrs = { 'constraint': attr.label(providers = [platform_common.ConstraintValueInfo])},",
+ ")");
+
+ scratch.file(
+ "test/platform/BUILD",
+ "load('//test/platform:constraints.bzl', 'my_rule')",
+ "my_rule(name = 'r',",
+ " constraint = '//constraint:foo')");
+
+ ConfiguredTarget configuredTarget = getConfiguredTarget("//test/platform:r");
+ assertThat(configuredTarget).isNotNull();
+
+ Label settingLabel = (Label) configuredTarget.get("setting");
+ assertThat(settingLabel).isNotNull();
+ assertThat(settingLabel).isEqualTo(makeLabel("//constraint:basic"));
+ Label valueLabel = (Label) configuredTarget.get("value");
+ assertThat(valueLabel).isNotNull();
+ assertThat(valueLabel).isEqualTo(makeLabel("//constraint:foo"));
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java
index 555b71d76c..37d90523ef 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java
@@ -19,6 +19,8 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -27,8 +29,8 @@ import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class PlatformTest extends BuildViewTestCase {
- @Test
- public void testPlatform() throws Exception {
+ @Before
+ public void createPlatform() throws Exception {
scratch.file(
"constraint/BUILD",
"constraint_setting(name = 'basic')",
@@ -39,40 +41,37 @@ public class PlatformTest extends BuildViewTestCase {
" constraint_values = [",
" ':foo',",
" ])");
+ }
+ @Test
+ public void testPlatform() throws Exception {
ConfiguredTarget platform = getConfiguredTarget("//constraint:plat1");
assertThat(platform).isNotNull();
- PlatformProvider provider = platform.getProvider(PlatformProvider.class);
+ PlatformInfo provider = PlatformInfo.fromTarget(platform);
assertThat(provider).isNotNull();
assertThat(provider.constraints()).hasSize(1);
- ConstraintSettingProvider constraintSettingProvider =
- ConstraintSettingProvider.create(makeLabel("//constraint:basic"));
- ConstraintValueProvider constraintValueProvider =
- ConstraintValueProvider.create(constraintSettingProvider, makeLabel("//constraint:foo"));
- assertThat(provider.constraints())
- .containsExactlyEntriesIn(
- ImmutableMap.of(constraintSettingProvider, constraintValueProvider));
+ ConstraintSettingInfo constraintSetting =
+ ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
+ ConstraintValueInfo constraintValue =
+ ConstraintValueInfo.create(constraintSetting, makeLabel("//constraint:foo"));
+ assertThat(provider.constraints()).containsExactly(constraintValue);
assertThat(provider.remoteExecutionProperties()).isEmpty();
}
@Test
public void testPlatform_overlappingConstraintValueError() throws Exception {
checkError(
- "constraint",
- "plat1",
+ "constraint/overlap",
+ "plat_overlap",
"Duplicate constraint_values for constraint_setting //constraint:basic: "
- + "//constraint:foo, //constraint:bar",
- "constraint_setting(name = 'basic')",
- "constraint_value(name = 'foo',",
- " constraint_setting = ':basic',",
- " )",
+ + "//constraint:foo, //constraint/overlap:bar",
"constraint_value(name = 'bar',",
- " constraint_setting = ':basic',",
+ " constraint_setting = '//constraint:basic',",
" )",
- "platform(name = 'plat1',",
+ "platform(name = 'plat_overlap',",
" constraint_values = [",
- " ':foo',",
+ " '//constraint:foo',",
" ':bar',",
" ])");
}
@@ -80,14 +79,10 @@ public class PlatformTest extends BuildViewTestCase {
@Test
public void testPlatform_remoteExecution() throws Exception {
scratch.file(
- "constraint/BUILD",
- "constraint_setting(name = 'basic')",
- "constraint_value(name = 'foo',",
- " constraint_setting = ':basic',",
- " )",
- "platform(name = 'plat1',",
+ "constraint/remote/BUILD",
+ "platform(name = 'plat_remote',",
" constraint_values = [",
- " ':foo',",
+ " '//constraint:foo',",
" ],",
" remote_execution_properties = {",
" 'foo': 'val1',",
@@ -95,12 +90,48 @@ public class PlatformTest extends BuildViewTestCase {
" },",
")");
- ConfiguredTarget platform = getConfiguredTarget("//constraint:plat1");
+ ConfiguredTarget platform = getConfiguredTarget("//constraint/remote:plat_remote");
assertThat(platform).isNotNull();
- PlatformProvider provider = platform.getProvider(PlatformProvider.class);
+ PlatformInfo provider = PlatformInfo.fromTarget(platform);
assertThat(provider).isNotNull();
assertThat(provider.remoteExecutionProperties())
.containsExactlyEntriesIn(ImmutableMap.of("foo", "val1", "bar", "val2"));
}
+
+ @Test
+ public void testPlatform_skylark() throws Exception {
+
+ scratch.file(
+ "test/platform/platform.bzl",
+ "def _impl(ctx):",
+ " platform = ctx.attr.platform[platform_common.PlatformInfo]",
+ " return struct(",
+ " count = len(platform.constraints),",
+ " first_setting = platform.constraints[0].constraint.label,",
+ " first_value = platform.constraints[0].label)",
+ "my_rule = rule(",
+ " _impl,",
+ " attrs = { 'platform': attr.label(providers = [platform_common.PlatformInfo])},",
+ ")");
+
+ scratch.file(
+ "test/platform/BUILD",
+ "load('//test/platform:platform.bzl', 'my_rule')",
+ "my_rule(name = 'r',",
+ " platform = '//constraint:plat1')");
+
+ ConfiguredTarget configuredTarget = getConfiguredTarget("//test/platform:r");
+ assertThat(configuredTarget).isNotNull();
+
+ int count = (int) configuredTarget.get("count");
+ assertThat(count).isEqualTo(1);
+
+ Label settingLabel = (Label) configuredTarget.get("first_setting");
+ assertThat(settingLabel).isNotNull();
+ assertThat(settingLabel).isEqualTo(makeLabel("//constraint:basic"));
+ Label valueLabel = (Label) configuredTarget.get("first_value");
+ assertThat(valueLabel).isNotNull();
+ assertThat(valueLabel).isEqualTo(makeLabel("//constraint:foo"));
+ }
}