diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java | 92 | ||||
-rwxr-xr-x | src/test/shell/bazel/bazel_rules_test.sh | 31 |
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" |