diff options
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.java | 44 |
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 |