aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java92
-rwxr-xr-xsrc/test/shell/bazel/bazel_rules_test.sh31
2 files changed, 110 insertions, 13 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java
index 1f3ce8b212..9837861a56 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java
@@ -93,19 +93,24 @@ public class LabelTest {
}
@Test
- public void testGetRelative() throws Exception {
- Label base = Label
- .parseAbsolute("//foo/bar:baz");
- {
- Label l = base.getRelative("//p1/p2:target");
- assertEquals("p1/p2", l.getPackageName());
- assertEquals("target", l.getName());
- }
- {
- Label l = base.getRelative(":quux");
- assertEquals("foo/bar", l.getPackageName());
- assertEquals("quux", l.getName());
- }
+ public void testGetRelativeWithAbsoluteLabel() throws Exception {
+ Label base = Label.parseAbsolute("//foo/bar:baz");
+ Label l = base.getRelative("//p1/p2:target");
+ assertEquals("p1/p2", l.getPackageName());
+ assertEquals("target", l.getName());
+ }
+
+ @Test
+ public void testGetRelativeWithRelativeLabel() throws Exception {
+ Label base = Label.parseAbsolute("//foo/bar:baz");
+ Label l = base.getRelative(":quux");
+ assertEquals("foo/bar", l.getPackageName());
+ assertEquals("quux", l.getName());
+ }
+
+ @Test
+ public void testGetRelativeWithIllegalLabel() throws Exception {
+ Label base = Label.parseAbsolute("//foo/bar:baz");
try {
base.getRelative("/p1/p2:target");
fail();
@@ -133,6 +138,67 @@ public class LabelTest {
}
@Test
+ public void testGetRelativeWithDifferentRepo() throws Exception {
+ PackageIdentifier packageId = PackageIdentifier.create("@repo", new PathFragment("foo"));
+ Label base = Label.create(packageId, "bar");
+
+ Label relative = base.getRelative("@remote//x:y");
+
+ assertEquals(RepositoryName.create("@remote"), relative.getPackageIdentifier().getRepository());
+ assertEquals(new PathFragment("x"), relative.getPackageFragment());
+ assertEquals("y", relative.getName());
+ }
+
+ @Test
+ public void testGetRelativeWithRepoLocalAbsoluteLabel() throws Exception {
+ PackageIdentifier packageId = PackageIdentifier.create("@repo", new PathFragment("foo"));
+ Label base = Label.create(packageId, "bar");
+
+ Label relative = base.getRelative("//x:y");
+
+ assertEquals(packageId.getRepository(), relative.getPackageIdentifier().getRepository());
+ assertEquals(new PathFragment("x"), relative.getPackageFragment());
+ assertEquals("y", relative.getName());
+ }
+
+ @Test
+ public void testGetRelativeWithLocalRepoRelativeLabel() throws Exception {
+ PackageIdentifier packageId = PackageIdentifier.create("@repo", new PathFragment("foo"));
+ Label base = Label.create(packageId, "bar");
+
+ Label relative = base.getRelative(":y");
+
+ assertEquals(packageId.getRepository(), relative.getPackageIdentifier().getRepository());
+ assertEquals(new PathFragment("foo"), relative.getPackageFragment());
+ assertEquals("y", relative.getName());
+ }
+
+ @Test
+ public void testGetRelativeWithRepoAndReservedPackage() throws Exception {
+ PackageIdentifier packageId = PackageIdentifier.create("@repo", new PathFragment("foo"));
+ Label base = Label.create(packageId, "bar");
+
+ Label relative = base.getRelative("//conditions:default");
+
+ PackageIdentifier expected = PackageIdentifier.createInDefaultRepo("conditions");
+ assertEquals(expected.getRepository(), relative.getPackageIdentifier().getRepository());
+ assertEquals(expected.getPackageFragment(), relative.getPackageFragment());
+ assertEquals("default", relative.getName());
+ }
+
+ @Test
+ public void testGetRelativeWithRemoteRepoToDefaultRepo() throws Exception {
+ PackageIdentifier packageId = PackageIdentifier.create("@repo", new PathFragment("foo"));
+ Label base = Label.create(packageId, "bar");
+
+ Label relative = base.getRelative("@//x:y");
+
+ assertEquals(RepositoryName.create("@"), relative.getPackageIdentifier().getRepository());
+ assertEquals(new PathFragment("x"), relative.getPackageFragment());
+ assertEquals("y", relative.getName());
+ }
+
+ @Test
public void testFactory() throws Exception {
Label l = Label.create("foo/bar", "quux");
assertEquals("foo/bar", l.getPackageName());
diff --git a/src/test/shell/bazel/bazel_rules_test.sh b/src/test/shell/bazel/bazel_rules_test.sh
index 2547ef57d2..bb9e5e2a0f 100755
--- a/src/test/shell/bazel/bazel_rules_test.sh
+++ b/src/test/shell/bazel/bazel_rules_test.sh
@@ -243,4 +243,35 @@ EOF
bazel-genfiles/pkg/test.out
}
+function test_genrule_remote() {
+ cat > WORKSPACE <<EOF
+local_repository(
+ name = "r",
+ path = __workspace_dir__,
+)
+EOF
+ mkdir package
+ cat > package/BUILD <<EOF
+genrule(
+ name = "abs_dep",
+ srcs = ["//package:in"],
+ outs = ["abs_dep.out"],
+ cmd = "echo '\$(locations //package:in)' > \$@",
+)
+
+sh_binary(
+ name = "in",
+ srcs = ["in.sh"],
+)
+EOF
+
+ cat > package/in.sh << EOF
+#!/bin/bash
+echo "Hi"
+EOF
+ chmod +x package/in.sh
+
+ bazel build @r//package:abs_dep >$TEST_log 2>&1 || fail "Should build"
+}
+
run_suite "rules test"