aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/cmdline
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/cmdline')
-rw-r--r--src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java92
1 files changed, 79 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());