Open source more tests for packages/
Tested:
bazel test on merge-to-os-blaze.sh
checked total test method count on
blaze test //javatests/com/google/devtools/build/lib:PackagesTests //third_party/bazel/src/test/java/com/google/devtools/build/lib:packages-tests
--
MOS_MIGRATED_REVID=105963077
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java b/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java
new file mode 100644
index 0000000..9f2f9b6
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/packages/RelativePackageNameResolverTest.java
@@ -0,0 +1,122 @@
+// Copyright 2015 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.packages;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.google.devtools.build.lib.vfs.PathFragment;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Unit tests for {@link RelativePackageNameResolver}.
+ */
+@RunWith(JUnit4.class)
+public class RelativePackageNameResolverTest {
+ private RelativePackageNameResolver resolver;
+
+ @Test
+ public void testRelativePackagesBelowOneLevelWork() throws Exception {
+ createResolver("foo", true);
+ assertResolvesTo("bar", "foo/bar");
+
+ createResolver("foo/bar", true);
+ assertResolvesTo("pear", "foo/bar/pear");
+ }
+
+ @Test
+ public void testRelativePackagesBelowTwoLevelsWork() throws Exception {
+ createResolver("foo/bar", true);
+ assertResolvesTo("pear", "foo/bar/pear");
+ }
+
+ @Test
+ public void testRelativePackagesAboveOneLevelWork() throws Exception {
+ createResolver("foo", true);
+ assertResolvesTo("../bar", "bar");
+ }
+
+ @Test
+ public void testRelativePackagesAboveTwoLevelsWork() throws Exception {
+ createResolver("foo/bar", true);
+ assertResolvesTo("../../apple", "apple");
+ }
+
+ @Test
+ public void testSimpleAbsolutePackagesWork() throws Exception {
+ createResolver("foo", true);
+
+ assertResolvesTo("//foo", "foo");
+ assertResolvesTo("//foo/bar", "foo/bar");
+ }
+
+ @Test
+ public void testBuildNotRemoved() throws Exception {
+ createResolver("foo", false);
+
+ assertResolvesTo("bar/BUILD", "foo/bar/BUILD");
+ }
+
+ @Test
+ public void testBuildRemoved() throws Exception {
+ createResolver("foo", true);
+
+ assertResolvesTo("bar/BUILD", "foo/bar");
+ }
+
+ @Test
+ public void testEmptyOffset() throws Exception {
+ createResolver("", true);
+
+ assertResolvesTo("bar", "bar");
+ assertResolvesTo("bar/qux", "bar/qux");
+ }
+
+ @Test
+ public void testTooFarUpwardsOneLevelThrows() throws Exception {
+ createResolver("foo", true);
+
+ try {
+ resolver.resolve("../../bar");
+ fail("InvalidPackageNameException expected");
+ } catch (InvalidPackageNameException e) {
+ // good
+ }
+ }
+
+ @Test
+ public void testTooFarUpwardsTwoLevelsThrows() throws Exception {
+ createResolver("foo/bar", true);
+ assertResolvesTo("../../orange", "orange");
+
+ try {
+ resolver.resolve("../../../orange");
+ fail("InvalidPackageNameException expected");
+ } catch (InvalidPackageNameException e) {
+ // good
+ }
+ }
+
+ private void createResolver(String offset, boolean discardBuild) {
+ resolver = new RelativePackageNameResolver(new PathFragment(offset), discardBuild);
+ }
+
+ private void assertResolvesTo(String relative, String expectedAbsolute) throws Exception {
+ String result = resolver.resolve(relative);
+ assertEquals(expectedAbsolute, result);
+ }
+}