aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-12-14 14:58:39 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2015-12-15 12:00:14 +0000
commite040bb82b13581d11bc22096f444a06b1c8d0915 (patch)
tree4de47c556fa468efabdee53e78358a6281543dd4 /src/test
parentbe9f57775ac79a817a38eddd7a0ac4299d26b853 (diff)
Add a test that verifies that Skylark dependencies are repository-local.
-- MOS_MIGRATED_REVID=110150657
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index b740160bd7..a2af3e771a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -191,8 +191,8 @@ public class SkylarkRuleContextTest extends SkylarkTestCase {
getConfiguredTarget("//test:cclib");
assertContainsEvent(
"ERROR /workspace/test/BUILD:2:10: Label '//test:sub/my_sub_lib.h' crosses boundary of "
- + "subpackage 'test/sub' (perhaps you meant to put the colon here: "
- + "'//test/sub:my_sub_lib.h'?)");
+ + "subpackage 'test/sub' (perhaps you meant to put the colon here: "
+ + "'//test/sub:my_sub_lib.h'?)");
}
@Test
@@ -547,4 +547,33 @@ public class SkylarkRuleContextTest extends SkylarkTestCase {
PathFragment fragment = ((Artifact) result).getRootRelativePath();
assertEquals("foo/t.exe.params", fragment.getPathString());
}
+
+ @Test
+ public void testRelativeLabelInExternalRepository() throws Exception {
+ scratch.file("BUILD");
+ scratch.file("external_rule.bzl",
+ "def _impl(ctx):",
+ " return",
+ "external_rule = rule(",
+ " implementation = _impl,",
+ " attrs = {",
+ " 'internal_dep': attr.label(default = Label('//:dep'))",
+ " }",
+ ")");
+
+ scratch.file("/r/BUILD",
+ "filegroup(name='dep')");
+
+ scratch.file("/r/a/BUILD",
+ "load('/external_rule', 'external_rule')",
+ "external_rule(name='r')");
+
+ scratch.overwriteFile("WORKSPACE",
+ "local_repository(name='r', path='/r')");
+
+ invalidatePackages();
+ SkylarkRuleContext context = createRuleContext("@r//a:r");
+ Label depLabel = (Label) evalRuleContextCode(context, "ruleContext.attr.internal_dep.label");
+ assertThat(depLabel).isEqualTo(Label.parseAbsolute("@r//:dep"));
+ }
}