diff options
author | cushon <cushon@google.com> | 2017-11-21 13:17:49 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-11-21 13:20:08 -0800 |
commit | 7cc8efe44a167d818deb77e53f12cecc15b4e4aa (patch) | |
tree | 79577e2bdcfb003f577c3e880ec8dd743ec9f6e6 /src/test/java | |
parent | 59d2ece50d7998e355afff8fd7cabd4215fc070d (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.java | 87 |
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"); |