bazel packages: use skyframe not PackageFactory for loading
This change removes all but one uses of PackageFactoryApparatus and
createPackageForTesting. PackageFactoryTest is next.
PiperOrigin-RevId: 334468289
diff --git a/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java b/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
index 6ed979b..e2bc2dc 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java
@@ -18,10 +18,7 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -34,31 +31,22 @@
@RunWith(JUnit4.class)
public class EnvironmentGroupTest extends PackageLoadingTestCase {
- private Package pkg;
private EnvironmentGroup group;
@Before
public final void createPackage() throws Exception {
- Path buildfile =
- scratch.file(
- "pkg/BUILD",
- "environment(name='foo', fulfills = [':bar', ':baz'])",
- "environment(name='bar', fulfills = [':baz'])",
- "environment(name='baz')",
- "environment(name='not_in_group')",
- "environment_group(",
- " name = 'group',",
- " environments = [':foo', ':bar', ':baz'],",
- " defaults = [':foo'],",
- ")");
- pkg =
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("pkg"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
-
- group = (EnvironmentGroup) pkg.getTarget("group");
+ scratch.file(
+ "pkg/BUILD",
+ "environment(name='foo', fulfills = [':bar', ':baz'])",
+ "environment(name='bar', fulfills = [':baz'])",
+ "environment(name='baz')",
+ "environment(name='not_in_group')",
+ "environment_group(",
+ " name = 'group',",
+ " environments = [':foo', ':bar', ':baz'],",
+ " defaults = [':foo'],",
+ ")");
+ group = (EnvironmentGroup) getTarget("//pkg:group");
}
@Test
@@ -115,17 +103,11 @@
@Test
public void emptyGroupsNotAllowed() throws Exception {
- Path buildfile = scratch.file(
- "a/BUILD",
- "environment_group(name = 'empty_group', environments = [], defaults = [])");
+ scratch.file(
+ "a/BUILD", "environment_group(name = 'empty_group', environments = [], defaults = [])");
reporter.removeHandler(failFastHandler);
- Package emptyGroupPkg =
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("a"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
- assertThat(emptyGroupPkg.containsErrors()).isTrue();
+ Package pkg = getTarget("//a:BUILD").getPackage();
+ assertThat(pkg.containsErrors()).isTrue();
assertContainsEvent(
"environment group empty_group must contain at least one environment");
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
index 83ef9f3..8729529 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java
@@ -17,37 +17,21 @@
import static org.junit.Assert.assertThrows;
import com.google.common.base.Joiner;
-import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
-import com.google.devtools.build.lib.testutil.Scratch;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
+import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/** A test for the {@code exports_files} function defined in {@link PackageFactory}. */
+/** A test for the {@code exports_files} function. */
@RunWith(JUnit4.class)
-public class ExportsFilesTest {
-
- private Scratch scratch = new Scratch("/workspace");
- private EventCollectionApparatus events = new EventCollectionApparatus();
- private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
+public class ExportsFilesTest extends PackageLoadingTestCase {
private Package pkg() throws Exception {
- Path buildFile = scratch.file("pkg/BUILD",
- "exports_files(['foo.txt', 'bar.txt'])");
- return packages.createPackage("pkg", RootedPath.toRootedPath(root, buildFile));
+ scratch.file("pkg/BUILD", "exports_files(['foo.txt', 'bar.txt'])");
+ return getTarget("//pkg:BUILD").getPackage();
}
@Test
@@ -90,16 +74,12 @@
@Test
public void testExportsFilesAndRuleNameConflict() throws Exception {
- events.setFailFast(false);
-
- Path buildFile = scratch.file("pkg2/BUILD",
+ reporter.removeHandler(failFastHandler);
+ scratch.file(
+ "pkg2/BUILD",
"exports_files(['foo'])",
- "genrule(name = 'foo', srcs = ['bar'], outs = [],",
- " cmd = '/bin/true')");
- Package pkg = packages.createPackage("pkg2", RootedPath.toRootedPath(root, buildFile));
- events.assertContainsError("rule 'foo' in package 'pkg2' conflicts with "
- + "existing source file");
- assertThat(pkg.getTarget("foo") instanceof InputFile).isTrue();
+ "genrule(name = 'foo', srcs = ['bar'], outs = [], cmd = '/bin/true')");
+ assertThat(getTarget("//pkg2:foo")).isInstanceOf(InputFile.class);
+ assertContainsEvent("rule 'foo' in package 'pkg2' conflicts with existing source file");
}
-
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
index 68d90c9..8f87104 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/InputFileTest.java
@@ -17,47 +17,26 @@
import static com.google.common.truth.Truth.assertWithMessage;
import com.google.common.testing.EqualsTester;
-import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
-import com.google.devtools.build.lib.testutil.Scratch;
+import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/**
- * A test for {@link InputFile}.
- */
+/** A test for {@link InputFile}. */
@RunWith(JUnit4.class)
-public class InputFileTest {
+public class InputFileTest extends PackageLoadingTestCase {
private Path pathX;
private Path pathY;
private Package pkg;
- private EventCollectionApparatus events = new EventCollectionApparatus();
- private Scratch scratch = new Scratch("/workspace");
- private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
-
@Before
public final void writeFiles() throws Exception {
- Path buildfile =
- scratch.file(
- "pkg/BUILD",
- "genrule(name = 'dummy', ",
- " cmd = '', ",
- " outs = [], ",
- " srcs = ['x', 'subdir/y'])");
- pkg = packages.createPackage("pkg", RootedPath.toRootedPath(root, buildfile));
- events.assertNoWarningsOrErrors();
+ scratch.file("pkg/BUILD", "genrule(name='dummy', cmd='', outs=[], srcs=['x', 'subdir/y'])");
+ pkg = getTarget("//pkg:BUILD").getPackage();
+ assertNoEvents();
this.pathX = scratch.file("pkg/x", "blah");
this.pathY = scratch.file("pkg/subdir/y", "blah blah");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
index fd4fc3b..ee8487b 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
@@ -16,10 +16,7 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.common.testing.EqualsTester;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -32,22 +29,10 @@
@Before
public final void createRule() throws Exception {
- Path buildfile =
- scratch.file(
- "pkg/BUILD",
- "genrule(name='foo', ",
- " srcs=[], ",
- " cmd='', ",
- " outs=['x', 'subdir/y'])");
- this.pkg =
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("pkg"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ scratch.file("pkg/BUILD", "genrule(name='foo', srcs=[], cmd='', outs=['x', 'subdir/y'])");
+ this.rule = (Rule) getTarget("//pkg:foo");
+ this.pkg = rule.getPackage();
assertNoEvents();
-
- this.rule = (Rule) pkg.getTarget("foo");
}
private void checkTargetRetainsGeneratingRule(OutputFile output) throws Exception {
@@ -100,23 +85,18 @@
@Test
public void testDuplicateOutputFilesInDifferentRules() throws Exception {
- Path buildfile =
- scratch.file(
- "two_outs/BUILD",
- "genrule(name='a',",
- " cmd='ls >$(location out)',",
- " outs=['out'])",
- "",
- "genrule(name='b',",
- " cmd='ls >$(location out)',",
- " outs=['out'])");
+ scratch.file(
+ "two_outs/BUILD",
+ "genrule(name='a',",
+ " cmd='ls >$(location out)',",
+ " outs=['out'])",
+ "",
+ "genrule(name='b',",
+ " cmd='ls >$(location out)',",
+ " outs=['out'])");
reporter.removeHandler(failFastHandler);
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("two_outs"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ getTarget("//two_outs:BUILD");
assertContainsEvent(
"generated file 'out' in rule 'b' conflicts with "
+ "existing generated file from rule 'a'");
@@ -124,41 +104,27 @@
@Test
public void testOutputFileNameConflictsWithExistingRule() throws Exception {
- Path buildfile =
- scratch.file(
- "out_is_rule/BUILD",
- "genrule(name='a',",
- " cmd='ls >$(location out)',",
- " outs=['out'])",
- "",
- "genrule(name='b',",
- " cmd='ls >$(location out)',",
- " outs=['a'])");
+ scratch.file(
+ "out_is_rule/BUILD",
+ "genrule(name='a',",
+ " cmd='ls >$(location out)',",
+ " outs=['out'])",
+ "",
+ "genrule(name='b',",
+ " cmd='ls >$(location out)',",
+ " outs=['a'])");
reporter.removeHandler(failFastHandler);
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("out_is_rule"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ getTarget("//out_is_rule:BUILD");
assertContainsEvent("generated file 'a' in rule 'b' conflicts with existing genrule rule");
}
@Test
public void testDuplicateOutputFilesInSameRule() throws Exception {
- Path buildfile =
- scratch.file(
- "two_outs/BUILD",
- "genrule(name='a',",
- " cmd='ls >$(location out)',",
- " outs=['out', 'out'])");
-
+ scratch.file(
+ "two_outs/BUILD", "genrule(name='a', cmd='ls >$(location out)',outs=['out', 'out'])");
reporter.removeHandler(failFastHandler);
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("two_outs"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ getTarget("//two_outs:BUILD");
assertContainsEvent(
"generated file 'out' in rule 'a' conflicts with "
+ "existing generated file from rule 'a'");
@@ -166,55 +132,25 @@
@Test
public void testOutputFileWithIllegalName() throws Exception {
- Path buildfile =
- scratch.file(
- "bad_out_name/BUILD",
- "genrule(name='a',",
- " cmd='ls',",
- " outs=['!@#:'])");
-
+ scratch.file("bad_out_name/BUILD", "genrule(name='a', cmd='ls', outs=['!@#:'])");
reporter.removeHandler(failFastHandler);
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("bad_out_name"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ getTarget("//bad_out_name:BUILD");
assertContainsEvent("illegal output file name '!@#:' in rule //bad_out_name:a");
}
@Test
public void testOutputFileWithCrossPackageLabel() throws Exception {
- Path buildfile =
- scratch.file(
- "cross_package_out/BUILD",
- "genrule(name='a',",
- " cmd='ls',",
- " outs=['//foo:bar'])");
-
+ scratch.file("cross_package_out/BUILD", "genrule(name='a', cmd='ls', outs=['//foo:bar'])");
reporter.removeHandler(failFastHandler);
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("cross_package_out"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ getTarget("//cross_package_out:BUILD");
assertContainsEvent("label '//foo:bar' is not in the current package");
}
@Test
public void testOutputFileNamedBUILD() throws Exception {
- Path buildfile =
- scratch.file(
- "output_called_build/BUILD",
- "genrule(name='a',",
- " cmd='ls',",
- " outs=['BUILD'])");
-
+ scratch.file("output_called_build/BUILD", "genrule(name='a', cmd='ls', outs=['BUILD'])");
reporter.removeHandler(failFastHandler);
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo("output_called_build"),
- RootedPath.toRootedPath(root, buildfile),
- getPackageManager(),
- reporter);
+ getTarget("//output_called_build:BUILD");
assertContainsEvent("generated file 'BUILD' in rule 'a' conflicts with existing source file");
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
index 7acef7e..08b68e2 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageGroupStaticInitializationTest.java
@@ -17,14 +17,8 @@
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.RepositoryName;
-import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
-import com.google.devtools.build.lib.testutil.Scratch;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
+import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import java.util.concurrent.SynchronousQueue;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -32,20 +26,11 @@
/**
* Checks against a class initialization deadlock. "query sometimes hangs".
*
- * <p>This requires static initialization of PackageGroup and PackageSpecification
- * to occur in a multithreaded context, and therefore must be in its own class.
+ * <p>This requires static initialization of PackageGroup and PackageSpecification to occur in a
+ * multithreaded context, and therefore must be in its own class.
*/
@RunWith(JUnit4.class)
-public class PackageGroupStaticInitializationTest {
- private Scratch scratch = new Scratch("/workspace");
- private EventCollectionApparatus events = new EventCollectionApparatus();
- private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
+public class PackageGroupStaticInitializationTest extends PackageLoadingTestCase {
@Test
public void testNoDeadlockOnPackageGroupCreation() throws Exception {
@@ -77,7 +62,7 @@
@Override
public void run() {
try {
- getPackageGroup("fruits", "mango");
+ getTarget("//fruits:mango");
groupQueue.take();
} catch (Exception e) {
// Can't throw from Runnable, but this will cause the test to timeout
@@ -94,14 +79,4 @@
assertThat(producingThread.isAlive()).isFalse();
assertThat(consumingThread.isAlive()).isFalse();
}
-
- private Package getPackage(String packageName) throws Exception {
- PathFragment buildFileFragment = PathFragment.create(packageName).getRelative("BUILD");
- Path buildFile = scratch.resolve(buildFileFragment.getPathString());
- return packages.createPackage(packageName, RootedPath.toRootedPath(root, buildFile));
- }
-
- private PackageGroup getPackageGroup(String pkg, String name) throws Exception {
- return (PackageGroup) getPackage(pkg).getTarget(name);
- }
}
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 eff3f7a..64543ac 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
@@ -16,31 +16,14 @@
import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.common.truth.Truth.assertThat;
-import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
-import com.google.devtools.build.lib.testutil.Scratch;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
-import org.junit.Before;
+import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/**
- * Unit tests for PackageGroup.
- */
+/** Unit tests for PackageGroup. */
@RunWith(JUnit4.class)
-public class PackageGroupTest {
- private Scratch scratch = new Scratch("/workspace");
- private EventCollectionApparatus events = new EventCollectionApparatus();
- private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
+public class PackageGroupTest extends PackageLoadingTestCase {
@Test
public void testDoesNotFailHorribly() throws Exception {
@@ -54,9 +37,9 @@
public void testEmptyPackageGroupNameDoesNotThrow() throws Exception {
scratch.file("strawberry/BUILD", "package_group(name = '', packages=[])");
- events.setFailFast(false);
+ reporter.removeHandler(failFastHandler);
getPackage("strawberry");
- events.assertContainsError("package group has invalid name");
+ assertContainsEvent("package group has invalid name");
}
@Test
@@ -84,33 +67,28 @@
scratch.file("vegetables/BUILD");
scratch.file("fruits/vegetables/BUILD");
- events.setFailFast(false);
+ reporter.removeHandler(failFastHandler);
getPackageGroup("fruits", "apple");
- events.assertContainsError("invalid package name 'vegetables'");
+ assertContainsEvent("invalid package name 'vegetables'");
}
@Test
public void testPackagesWithRepositoryDoNotWork() throws Exception {
scratch.file(
- "fruits/BUILD",
- "package_group(name = 'banana',",
- " packages = ['@veggies//:cucumber'])");
+ "fruits/BUILD", "package_group(name = 'banana', packages = ['@veggies//:cucumber'])");
- events.setFailFast(false);
+ reporter.removeHandler(failFastHandler);
getPackageGroup("fruits", "banana");
- events.assertContainsError("invalid package name '@veggies//:cucumber'");
+ assertContainsEvent("invalid package name '@veggies//:cucumber'");
}
@Test
public void testAllPackagesInMainRepositoryDoesNotWork() throws Exception {
- scratch.file(
- "fruits/BUILD",
- "package_group(name = 'apple',",
- " packages = ['@//...'])");
+ scratch.file("fruits/BUILD", "package_group(name = 'apple', packages = ['@//...'])");
- events.setFailFast(false);
+ reporter.removeHandler(failFastHandler);
getPackageGroup("fruits", "apple");
- events.assertContainsError("invalid package name '@//...'");
+ assertContainsEvent("invalid package name '@//...'");
}
@Test
@@ -123,30 +101,25 @@
scratch.file("vegetables/BUILD");
scratch.file("fruits/vegetables/BUILD");
- events.setFailFast(false);
+ reporter.removeHandler(failFastHandler);
getPackageGroup("fruits", "apple");
- events.assertContainsError("invalid package name '//vegetables:carrot'");
+ assertContainsEvent("invalid package name '//vegetables:carrot'");
}
@Test
public void testTargetNameAsPackageDoesNotWork2() throws Exception {
- scratch.file(
- "fruits/BUILD", "package_group(name = 'apple',", " packages = [':carrot'])");
-
+ scratch.file("fruits/BUILD", "package_group(name = 'apple', packages = [':carrot'])");
scratch.file("vegetables/BUILD");
scratch.file("fruits/vegetables/BUILD");
- events.setFailFast(false);
+ reporter.removeHandler(failFastHandler);
getPackageGroup("fruits", "apple");
- events.assertContainsError("invalid package name ':carrot'");
+ assertContainsEvent("invalid package name ':carrot'");
}
@Test
public void testAllBeneathSpecificationWorks() throws Exception {
- scratch.file(
- "fruits/BUILD",
- "package_group(name = 'maracuja',",
- " packages = ['//tropics/...'])");
+ scratch.file("fruits/BUILD", "package_group(name = 'maracuja', packages = ['//tropics/...'])");
getPackageGroup("fruits", "maracuja");
}
@@ -267,13 +240,10 @@
}
private Package getPackage(String packageName) throws Exception {
- PathFragment buildFileFragment = PathFragment.create(packageName).getRelative("BUILD");
-
- Path buildFile = scratch.resolve(buildFileFragment.getPathString());
- return packages.createPackage(packageName, RootedPath.toRootedPath(root, buildFile));
+ return getTarget("//" + packageName + ":BUILD").getPackage();
}
private PackageGroup getPackageGroup(String pkg, String name) throws Exception {
- return (PackageGroup) getPackage(pkg).getTarget(name);
+ return (PackageGroup) getTarget("//" + pkg + ":" + name);
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
index c1f6d47..4ca8b15 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleTest.java
@@ -16,91 +16,66 @@
import static com.google.common.truth.Truth.assertThat;
-import com.google.devtools.build.lib.events.util.EventCollectionApparatus;
-import com.google.devtools.build.lib.testutil.Scratch;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
-import org.junit.Before;
+import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.events.EventKind;
+import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/**
- * Tests for {@link Rule}.
- */
+/** Tests for {@link Rule}. */
@RunWith(JUnit4.class)
-public class RuleTest {
- private Scratch scratch = new Scratch("/workspace");
- private EventCollectionApparatus events = new EventCollectionApparatus();
- private PackageFactoryApparatus packages = new PackageFactoryApparatus(events.reporter());
- private Root root;
-
- @Before
- public void setUp() throws Exception {
- root = Root.fromPath(scratch.dir(""));
- }
+public class RuleTest extends PackageLoadingTestCase {
@Test
public void testOutputNameError() throws Exception {
- events.setFailFast(false);
- Path buildFile = scratch.file("namecollide/BUILD",
+ reporter.removeHandler(failFastHandler);
+ scratch.file(
+ "namecollide/BUILD",
"genrule(name = 'hello_world',",
- "srcs = ['ignore_me.txt'],",
- "outs = ['message.txt', 'hello_world'],",
- "cmd = 'echo \"Hello, world.\" >$(location message.txt)')");
-
- Package pkg = packages.createPackage("namecollide", RootedPath.toRootedPath(root, buildFile));
- Rule genRule = pkg.getRule("hello_world");
+ "srcs = ['ignore_me.txt'],",
+ "outs = ['message.txt', 'hello_world'],",
+ "cmd = 'echo \"Hello, world.\" >$(location message.txt)')");
+ Rule genRule = (Rule) getTarget("//namecollide:hello_world");
assertThat(genRule.containsErrors()).isFalse(); // TODO: assertTrue
- events.assertContainsWarning("target 'hello_world' is both a rule and a file; please choose "
- + "another name for the rule");
+ assertContainsEvent(
+ "target 'hello_world' is both a rule and a file; please choose another name for the rule",
+ ImmutableSet.of(EventKind.WARNING));
}
@Test
public void testIsLocalTestRuleForLocalEquals1() throws Exception {
- Path buildFile = scratch.file("x/BUILD",
+ scratch.file(
+ "x/BUILD",
"cc_test(name = 'y',",
" srcs = ['a'],",
" local = 0)",
"cc_test(name = 'z',",
" srcs = ['a'],",
" local = 1)");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, buildFile));
- Rule y = pkg.getRule("y");
+ Rule y = (Rule) getTarget("//x:y");
assertThat(TargetUtils.isLocalTestRule(y)).isFalse();
- Rule z = pkg.getRule("z");
+ Rule z = (Rule) getTarget("//x:z");
assertThat(TargetUtils.isLocalTestRule(z)).isTrue();
}
@Test
public void testDeprecation() throws Exception {
- Path buildFile = scratch.file("x/BUILD",
- "cc_test(name = 'y')",
- "cc_test(name = 'z', deprecation = 'Foo')");
- Package pkg = packages.createPackage("x", RootedPath.toRootedPath(root, buildFile));
- Rule y = pkg.getRule("y");
+ scratch.file("x/BUILD", "cc_test(name = 'y')", "cc_test(name = 'z', deprecation = 'Foo')");
+ Rule y = (Rule) getTarget("//x:y");
assertThat(TargetUtils.getDeprecation(y)).isNull();
- Rule z = pkg.getRule("z");
+ Rule z = (Rule) getTarget("//x:z");
assertThat(TargetUtils.getDeprecation(z)).isEqualTo("Foo");
}
@Test
public void testVisibilityValid() throws Exception {
- Package pkg =
- packages.createPackage(
- "x",
- RootedPath.toRootedPath(
- root,
- scratch.file(
- "x/BUILD",
- "cc_binary(name = 'pr',",
- " visibility = ['//visibility:private'])",
- "cc_binary(name = 'pu',",
- " visibility = ['//visibility:public'])",
- "cc_binary(name = 'cu',",
- " visibility = ['//a:b'])")));
-
+ scratch.file(
+ "x/BUILD",
+ "cc_binary(name = 'pr', visibility = ['//visibility:private'])",
+ "cc_binary(name = 'pu', visibility = ['//visibility:public'])",
+ "cc_binary(name = 'cu', visibility = ['//a:b'])");
+ Package pkg = getTarget("//x:BUILD").getPackage();
assertThat(pkg.getRule("pu").getVisibility()).isEqualTo(ConstantRuleVisibility.PUBLIC);
assertThat(pkg.getRule("pr").getVisibility()).isEqualTo(ConstantRuleVisibility.PRIVATE);
}
diff --git a/src/test/java/com/google/devtools/build/lib/query2/query/output/SyntheticAttributeHashCalculatorTest.java b/src/test/java/com/google/devtools/build/lib/query2/query/output/SyntheticAttributeHashCalculatorTest.java
index 65b31c5..520c708 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/query/output/SyntheticAttributeHashCalculatorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/query/output/SyntheticAttributeHashCalculatorTest.java
@@ -17,17 +17,12 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.NoSuchPackageException;
-import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
import com.google.devtools.build.lib.query2.proto.proto2api.Build;
import com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator;
import com.google.devtools.build.lib.vfs.DigestHashFunction;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.RootedPath;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -38,13 +33,12 @@
@Test
public void testComputeAttributeChangeChangesHash() throws Exception {
- Path buildFile = scratch.file("pkg/BUILD");
-
- scratch.overwriteFile("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
- Rule ruleBefore = getRule(buildFile, "x");
+ scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
+ Rule ruleBefore = (Rule) getTarget("//pkg:x");
scratch.overwriteFile("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['z'])");
- Rule ruleAfter = getRule(buildFile, "x");
+ invalidatePackages();
+ Rule ruleAfter = (Rule) getTarget("//pkg:x");
String hashBefore =
SyntheticAttributeHashCalculator.compute(
@@ -64,16 +58,15 @@
@Test
public void testComputeLocationDoesntChangeHash() throws Exception {
- Path buildFile = scratch.file("pkg/BUILD");
-
- scratch.overwriteFile("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
- Rule ruleBefore = getRule(buildFile, "x");
+ scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
+ Rule ruleBefore = (Rule) getTarget("//pkg:x");
scratch.overwriteFile(
"pkg/BUILD",
"genrule(name='rule_that_moves_x', cmd='touch $@', outs=['whatever'])",
"genrule(name='x', cmd='touch $@', outs=['y'])");
- Rule ruleAfter = getRule(buildFile, "x");
+ invalidatePackages();
+ Rule ruleAfter = (Rule) getTarget("//pkg:x");
String hashBefore =
SyntheticAttributeHashCalculator.compute(
@@ -93,8 +86,8 @@
@Test
public void testComputeSerializedAttributesUsedOverAvailable() throws Exception {
- Rule rule =
- getRule(scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])"), "x");
+ scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
+ Rule rule = (Rule) getTarget("//pkg:x");
String hashBefore =
SyntheticAttributeHashCalculator.compute(
@@ -124,8 +117,8 @@
@Test
public void testComputeExtraDataChangesHash() throws Exception {
- Rule rule =
- getRule(scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])"), "x");
+ scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
+ Rule rule = (Rule) getTarget("//pkg:x");
String hashBefore =
SyntheticAttributeHashCalculator.compute(
@@ -146,10 +139,8 @@
@Test
public void testComputePackageErrorStatusChangesHash() throws Exception {
- Path buildFile = scratch.file("pkg/BUILD");
-
- scratch.overwriteFile("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
- Rule ruleBefore = getRule(buildFile, "x");
+ scratch.file("pkg/BUILD", "genrule(name='x', cmd='touch $@', outs=['y'])");
+ Rule ruleBefore = (Rule) getTarget("//pkg:x");
// Remove fail-fast handler, we're intentionally creating a package with errors.
reporter.removeHandler(failFastHandler);
@@ -157,7 +148,8 @@
"pkg/BUILD",
"genrule(name='x', cmd='touch $@', outs=['z'])",
"genrule(name='missing_attributes')");
- Rule ruleAfter = getRule(buildFile, "x");
+ invalidatePackages();
+ Rule ruleAfter = (Rule) getTarget("//pkg:x");
assertThat(ruleAfter.containsErrors()).isTrue();
String hashBefore =
@@ -175,16 +167,4 @@
assertThat(hashBefore).isNotEqualTo(hashAfter);
}
-
- private Rule getRule(Path buildFile, String rule)
- throws NoSuchPackageException, InterruptedException {
- Package pkg =
- packageFactory.createPackageForTesting(
- PackageIdentifier.createInMainRepo(buildFile.getParentDirectory().getBaseName()),
- RootedPath.toRootedPath(root, buildFile),
- getPackageManager(),
- reporter);
-
- return pkg.getRule(rule);
- }
}