aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
authorGravatar cushon <cushon@google.com>2017-11-21 13:17:49 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-21 13:20:08 -0800
commit7cc8efe44a167d818deb77e53f12cecc15b4e4aa (patch)
tree79577e2bdcfb003f577c3e880ec8dd743ec9f6e6 /src/test/java
parent59d2ece50d7998e355afff8fd7cabd4215fc070d (diff)
Add support for negative package specifications
Package specifications can now be prefixed with `-` to indicate negation: the specification `-//foo/bar/...` excludes all packages under `//foo/bar` that would otherwise have been matched. RELNOTES: Package specifications can now be prefixed with `-` to indicate negation PiperOrigin-RevId: 176551382
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
index 4c48f0e62c..12f0eaf2db 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupTest.java
@@ -144,6 +144,93 @@ public class PackageGroupTest {
}
@Test
+ public void testNegative() throws Exception {
+ scratch.file("one/BUILD");
+ scratch.file("two/BUILD");
+ scratch.file("three/BUILD");
+ scratch.file("four/BUILD");
+ scratch.file(
+ "test/BUILD",
+ "package_group(",
+ " name = 'packages',",
+ " packages = [",
+ " '//one',",
+ " '//two',",
+ " '-//three',",
+ " '-//four',",
+ " ],",
+ ")");
+
+ PackageGroup grp = getPackageGroup("test", "packages");
+ assertThat(grp.contains(getPackage("one"))).isTrue();
+ assertThat(grp.contains(getPackage("two"))).isTrue();
+ assertThat(grp.contains(getPackage("three"))).isFalse();
+ assertThat(grp.contains(getPackage("four"))).isFalse();
+ }
+
+ @Test
+ public void testNegative_noSubpackages() throws Exception {
+ scratch.file("pkg/BUILD");
+ scratch.file("pkg/one/BUILD");
+ scratch.file("pkg/one/two/BUILD");
+ scratch.file(
+ "test/BUILD",
+ "package_group(",
+ " name = 'packages',",
+ " packages = [",
+ " '//pkg/...',",
+ " '-//pkg/one',",
+ " ],",
+ ")");
+
+ PackageGroup grp = getPackageGroup("test", "packages");
+ assertThat(grp.contains(getPackage("pkg"))).isTrue();
+ assertThat(grp.contains(getPackage("pkg/one"))).isFalse();
+ assertThat(grp.contains(getPackage("pkg/one/two"))).isTrue();
+ }
+
+ @Test
+ public void testNegative_subpackages() throws Exception {
+ scratch.file("pkg/BUILD");
+ scratch.file("pkg/one/BUILD");
+ scratch.file("pkg/one/two/BUILD");
+ scratch.file(
+ "test/BUILD",
+ "package_group(",
+ " name = 'packages',",
+ " packages = [",
+ " '//pkg/...',",
+ " '-//pkg/one/...',",
+ " ],",
+ ")");
+
+ PackageGroup grp = getPackageGroup("test", "packages");
+ assertThat(grp.contains(getPackage("pkg"))).isTrue();
+ assertThat(grp.contains(getPackage("pkg/one"))).isFalse();
+ assertThat(grp.contains(getPackage("pkg/one/two"))).isFalse();
+ }
+
+ @Test
+ public void testNegative_everything() throws Exception {
+ scratch.file("pkg/BUILD");
+ scratch.file("pkg/one/BUILD");
+ scratch.file("pkg/one/two/BUILD");
+ scratch.file(
+ "test/BUILD",
+ "package_group(",
+ " name = 'packages',",
+ " packages = [",
+ " '-//...',",
+ " ],",
+ ")");
+
+ PackageGroup grp = getPackageGroup("test", "packages");
+ assertThat(grp.contains(getPackage("pkg"))).isFalse();
+ assertThat(grp.contains(getPackage("pkg/one"))).isFalse();
+ assertThat(grp.contains(getPackage("pkg/one/two"))).isFalse();
+ }
+
+ @Test
public void testEverythingSpecificationWorks() throws Exception {
scratch.file("fruits/BUILD", "package_group(name = 'mango', packages = ['//...'])");
PackageGroup packageGroup = getPackageGroup("fruits", "mango");