aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java44
1 files changed, 41 insertions, 3 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 50c477520d..aef0e11052 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -430,6 +430,7 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
.add(Attribute.attr("tags", Type.STRING_LIST))
.build();
}
+
@Test
public void testAttrAllowedRuleClassesSpecificRuleClasses() throws Exception {
Attribute attr = buildAttribute("a",
@@ -437,6 +438,7 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
assertThat(attr.getAllowedRuleClassesPredicate().apply(ruleClass("java_binary"))).isTrue();
assertThat(attr.getAllowedRuleClassesPredicate().apply(ruleClass("genrule"))).isFalse();
}
+
@Test
public void testAttrDefaultValue() throws Exception {
Attribute attr = buildAttribute("a1", "attr.string(default = 'some value')");
@@ -444,6 +446,42 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
}
@Test
+ public void testLabelAttrDefaultValueAsString() throws Exception {
+ Attribute sligleAttr = buildAttribute("a1", "attr.label(default = '//foo:bar')");
+ assertThat(sligleAttr.getDefaultValueForTesting())
+ .isEqualTo(Label.parseAbsolute("//foo:bar", false));
+
+ Attribute listAttr =
+ buildAttribute("a2", "attr.label_list(default = ['//foo:bar', '//bar:foo'])");
+ assertThat(listAttr.getDefaultValueForTesting())
+ .isEqualTo(
+ ImmutableList.of(
+ Label.parseAbsolute("//foo:bar", false), Label.parseAbsolute("//bar:foo", false)));
+
+ Attribute dictAttr =
+ buildAttribute("a3", "attr.label_keyed_string_dict(default = {'//foo:bar': 'my value'})");
+ assertThat(dictAttr.getDefaultValueForTesting())
+ .isEqualTo(ImmutableMap.of(Label.parseAbsolute("//foo:bar", false), "my value"));
+ }
+
+ @Test
+ public void testLabelAttrDefaultValueAsStringBadValue() throws Exception {
+ checkErrorContains(
+ "invalid label '/foo:bar' in parameter 'default' of attribute 'label': "
+ + "invalid label: /foo:bar",
+ "attr.label(default = '/foo:bar')");
+
+ checkErrorContains(
+ "invalid label '/bar:foo' in element 1 of parameter 'default' of attribute "
+ + "'label_list': invalid label: /bar:foo",
+ "attr.label_list(default = ['//foo:bar', '/bar:foo'])");
+
+ checkErrorContains(
+ "invalid label '/bar:foo' in dict key element: invalid label: /bar:foo",
+ "attr.label_keyed_string_dict(default = {'//foo:bar': 'a', '/bar:foo': 'b'})");
+ }
+
+ @Test
public void testAttrDefaultValueBadType() throws Exception {
checkErrorContains(
"method attr.string(*, default: string, mandatory: bool, values: sequence of strings) "
@@ -819,9 +857,9 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
@Test
public void testLabelAttrWrongDefault() throws Exception {
checkErrorContains(
- "expected Label or Label-returning function or NoneType for 'default' "
- + "while calling label but got string instead: //foo:bar",
- "attr.label(default = '//foo:bar')");
+ "expected value of type 'string' for parameter 'default' of attribute 'label', "
+ + "but got 123 (int)",
+ "attr.label(default = 123)");
}
@Test