diff options
Diffstat (limited to 'src/test/java/com/google')
3 files changed, 34 insertions, 7 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java index 3ea5106c69..ab9c57ae0f 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java @@ -90,7 +90,7 @@ public class SkylarkAspectsTest extends BuildViewTestCase { "test/aspect.bzl", "def _impl(target, ctx):", " s = set([target.label])", - " for i in ctx.attr.deps:", + " for i in ctx.rule.attr.deps:", " s += i.target_labels", " return struct(target_labels = s)", "", @@ -154,7 +154,7 @@ public class SkylarkAspectsTest extends BuildViewTestCase { "test/aspect.bzl", "def _aspect_impl(target, ctx):", " s = set([target.label])", - " for i in ctx.attr.deps:", + " for i in ctx.rule.attr.deps:", " s += i.target_labels", " return struct(target_labels = s)", "", 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 1dc7896eaf..717a132003 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 @@ -33,6 +33,7 @@ import com.google.devtools.build.lib.packages.PredicateWithMessage; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.rules.SkylarkAttr; +import com.google.devtools.build.lib.rules.SkylarkAttr.Descriptor; import com.google.devtools.build.lib.rules.SkylarkFileType; import com.google.devtools.build.lib.rules.SkylarkRuleClassFunctions; import com.google.devtools.build.lib.rules.SkylarkRuleClassFunctions.RuleFunction; @@ -41,6 +42,7 @@ import com.google.devtools.build.lib.skylark.util.SkylarkTestCase; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileTypeSet; +import com.google.devtools.build.lib.util.Pair; import org.junit.Assert; import org.junit.Before; @@ -211,11 +213,35 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase { "def _impl(target, ctx):", " pass", "my_aspect = aspect(_impl,", - " extra_deps=['//foo/bar:baz']", - ")" - ); + " attrs = { '_extra_deps' : attr.label(default = Label('//foo/bar:baz')) }", + ")"); SkylarkAspect aspect = (SkylarkAspect) ev.lookup("my_aspect"); - assertThat(aspect.getExtraDeps()).containsExactly(Label.parseAbsolute("//foo/bar:baz")); + Pair<String, Descriptor> pair = Iterables.getOnlyElement(aspect.getAttributes()); + assertThat(pair.first).isEqualTo("$extra_deps"); + assertThat(pair.second.getAttributeBuilder().build("$extra_deps").getDefaultValue(null)) + .isEqualTo(Label.parseAbsolute("//foo/bar:baz")); + } + + @Test + public void testAspectNonImplicitAttribute() throws Exception { + checkErrorContains( + "Aspect attribute 'extra_deps' must be implicit (its name should start with '_')", + "def _impl(target, ctx):", + " pass", + "my_aspect = aspect(_impl,", + " attrs = { 'extra_deps' : attr.label(default = Label('//foo/bar:baz')) }", + ")"); + } + + @Test + public void testAspectNoDefaultValueAttribute() throws Exception { + checkErrorContains( + "Aspect attribute '_extra_deps' has no default value", + "def _impl(target, ctx):", + " pass", + "my_aspect = aspect(_impl,", + " attrs = { '_extra_deps' : attr.label() }", + ")"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java b/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java index 670029feb1..bc545187f6 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.PackageFactory.PackageContext; import com.google.devtools.build.lib.rules.SkylarkModules; import com.google.devtools.build.lib.rules.SkylarkRuleContext; +import com.google.devtools.build.lib.rules.SkylarkRuleContext.Kind; import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.util.EvaluationTestCase; @@ -90,7 +91,7 @@ public abstract class SkylarkTestCase extends BuildViewTestCase { } protected SkylarkRuleContext createRuleContext(String label) throws Exception { - return new SkylarkRuleContext(getRuleContextForSkylark(getConfiguredTarget(label))); + return new SkylarkRuleContext(getRuleContextForSkylark(getConfiguredTarget(label)), Kind.RULE); } protected Object evalRuleContextCode(String... lines) throws Exception { |