aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2015-12-16 15:10:20 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-12-16 15:31:44 +0000
commitace678e16def33a94ad1cb3bec7336d894510272 (patch)
treef83705c727e7af498cc2e2ad0e75020d866d14c0 /src/test/java/com/google/devtools/build/lib/skylark
parent8853df9a19dabc72c3b723b84e6cb69b6fb2884e (diff)
Implement aspect attributes and expose them to aspect implementation function.
-- MOS_MIGRATED_REVID=110356954
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java34
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java3
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 {