diff options
author | 2016-06-10 16:17:45 +0000 | |
---|---|---|
committer | 2016-06-10 17:16:00 +0000 | |
commit | 3ad5645a5148054089c131478ae0404861f79f5d (patch) | |
tree | bd60620f2d0c918fd06e0de44230fb32d6b996e5 /src | |
parent | 4ec1e588ec7b375714fdc33b6c07be8b081f7372 (diff) |
Introduce TestConstants#PACKAGE_FACTORY_FACTORY_FOR_TESTING for the sake of making it easier to create PackageFactory instances in unit tests.
--
MOS_MIGRATED_REVID=124566862
Diffstat (limited to 'src')
19 files changed, 135 insertions, 69 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index 050b3f39ad..c53b5f8f1c 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -64,6 +64,7 @@ import com.google.devtools.build.lib.syntax.Statement; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.syntax.Type.ConversionException; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.UnixGlob; @@ -333,47 +334,50 @@ public final class PackageFactory { private final Package.Builder.Helper packageBuilderHelper; - /** - * Constructs a {@code PackageFactory} instance with the given rule factory. - */ - @VisibleForTesting - public PackageFactory(RuleClassProvider ruleClassProvider) { - this( - ruleClassProvider, - null, - AttributeContainer.ATTRIBUTE_CONTAINER_FACTORY, - ImmutableList.<EnvironmentExtension>of(), - "test", - Package.Builder.DefaultHelper.INSTANCE); - } - + /** Factory for {@link PackageFactory} instances. Intended to only be used by unit tests. */ @VisibleForTesting - public PackageFactory(RuleClassProvider ruleClassProvider, - EnvironmentExtension environmentExtension) { - this( - ruleClassProvider, - null, - AttributeContainer.ATTRIBUTE_CONTAINER_FACTORY, - ImmutableList.of(environmentExtension), - "test", - Package.Builder.DefaultHelper.INSTANCE); - } - - @VisibleForTesting - public PackageFactory(RuleClassProvider ruleClassProvider, - Iterable<EnvironmentExtension> environmentExtensions) { - this( - ruleClassProvider, - null, - AttributeContainer.ATTRIBUTE_CONTAINER_FACTORY, - environmentExtensions, - "test", - Package.Builder.DefaultHelper.INSTANCE); + public abstract static class FactoryForTesting { + public final PackageFactory create(RuleClassProvider ruleClassProvider, FileSystem fs) { + return create(ruleClassProvider, ImmutableList.<EnvironmentExtension>of(), fs); + } + + public final PackageFactory create( + RuleClassProvider ruleClassProvider, + EnvironmentExtension environmentExtension, + FileSystem fs) { + return create(ruleClassProvider, ImmutableList.of(environmentExtension), fs); + } + + public final PackageFactory create( + RuleClassProvider ruleClassProvider, + Iterable<EnvironmentExtension> environmentExtensions, + FileSystem fs) { + return create( + ruleClassProvider, + null, + AttributeContainer.ATTRIBUTE_CONTAINER_FACTORY, + environmentExtensions, + "test", + fs); + } + + protected abstract PackageFactory create( + RuleClassProvider ruleClassProvider, + Map<String, String> platformSetRegexps, + Function<RuleClass, AttributeContainer> attributeContainerFactory, + Iterable<EnvironmentExtension> environmentExtensions, + String version, + FileSystem fs); } /** * Constructs a {@code PackageFactory} instance with a specific glob path translator * and rule factory. + * + * <p>Only intended to be called by BlazeRuntime or {@link FactoryForTesting#create}. + * + * <p>Do not call this constructor directly in tests; please use + * TestConstants#PACKAGE_FACTORY_FACTORY_FOR_TESTING instead. */ public PackageFactory( RuleClassProvider ruleClassProvider, diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java index 5f0bdec314..c753ff8732 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java @@ -158,7 +158,8 @@ public abstract class AnalysisTestCase extends FoundationTestCase { protected void useRuleClassProvider(ConfiguredRuleClassProvider ruleClassProvider) throws Exception { this.ruleClassProvider = ruleClassProvider; - PackageFactory pkgFactory = new PackageFactory(ruleClassProvider); + PackageFactory pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + ruleClassProvider, scratch.getFileSystem()); BinTools binTools = BinTools.forUnitTesting(directories, TestConstants.EMBEDDED_TOOLS); skyframeExecutor = SequencedSkyframeExecutor.create( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index 822774f080..84ece3d89f 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -178,7 +178,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { protected OptionsParser optionsParser; private PackageCacheOptions packageCacheOptions; - private PackageFactory pkgFactory; + protected PackageFactory pkgFactory; protected MockToolsConfig mockToolsConfig; @@ -202,7 +202,8 @@ public abstract class BuildViewTestCase extends FoundationTestCase { new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories); mutableActionGraph = new MapBasedActionGraph(); ruleClassProvider = getRuleClassProvider(); - pkgFactory = new PackageFactory(ruleClassProvider, getEnvironmentExtensions()); + pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + ruleClassProvider, getEnvironmentExtensions(), scratch.getFileSystem()); tsgm = new TimestampGranularityMonitor(BlazeClock.instance()); skyframeExecutor = SequencedSkyframeExecutor.create( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java index 60cef90c42..9dce3488ba 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java @@ -93,7 +93,8 @@ public abstract class ConfigurationTestCase extends FoundationTestCase { final PackageFactory pkgFactory; BlazeDirectories directories = new BlazeDirectories(outputBase, outputBase, rootDirectory, TestConstants.PRODUCT_NAME); - pkgFactory = new PackageFactory(ruleClassProvider); + pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + ruleClassProvider, scratch.getFileSystem()); AnalysisTestUtil.DummyWorkspaceStatusActionFactory workspaceStatusActionFactory = new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories); AnalysisMock analysisMock = getAnalysisMock(); 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 771322a0c3..c8e09644fc 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 @@ -22,7 +22,6 @@ 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.testutil.TestRuleClassProvider; import com.google.devtools.build.lib.vfs.Path; import org.junit.Before; @@ -54,9 +53,8 @@ public class EnvironmentGroupTest extends PackageLoadingTestCase { " environments = [':foo', ':bar', ':baz'],", " defaults = [':foo'],", ")"); - PackageFactory pkgFactory = new PackageFactory(TestRuleClassProvider.getRuleClassProvider()); pkg = - pkgFactory.createPackageForTesting( + packageFactory.createPackageForTesting( PackageIdentifier.createInMainRepo("pkg"), buildfile, getPackageManager(), reporter); group = (EnvironmentGroup) pkg.getTarget("group"); 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 7401c1627d..34a3a9bbb7 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 @@ -19,7 +19,6 @@ import static org.junit.Assert.assertSame; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase; -import com.google.devtools.build.lib.testutil.TestRuleClassProvider; import com.google.devtools.build.lib.vfs.Path; import org.junit.Before; @@ -29,15 +28,11 @@ import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class OutputFileTest extends PackageLoadingTestCase { - - private PackageFactory packageFactory; private Package pkg; private Rule rule; @Before public final void createRule() throws Exception { - packageFactory = new PackageFactory(TestRuleClassProvider.getRuleClassProvider()); - Path buildfile = scratch.file( "pkg/BUILD", diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java index e160d6d696..ee821a7948 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java @@ -85,7 +85,8 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase { } else { ruleClassProvider = TestRuleClassProvider.getRuleClassProvider(); } - packageFactory = new PackageFactory(ruleClassProvider, getEnvironmentExtensions()); + packageFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + ruleClassProvider, getEnvironmentExtensions(), scratch.getFileSystem()); skyframeExecutor = createSkyframeExecutor(getPreprocessorFactorySupplier()); setUpSkyframe(parsePackageCacheOptions()); } diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java index 32497bdcd6..76ce0b408c 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.packages.NoSuchThingException; import com.google.devtools.build.lib.packages.Package; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.Preprocessor; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; @@ -468,7 +467,8 @@ public class IncrementalLoadingTest { skyframeExecutor = SequencedSkyframeExecutor.create( - new PackageFactory(TestRuleClassProvider.getRuleClassProvider()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), fs), new BlazeDirectories(fs.getPath("/install"), fs.getPath("/output"), workspace, TestConstants.PRODUCT_NAME), null, /* BinTools */ diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java index 5c94f042d4..3bc277b553 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java @@ -625,7 +625,8 @@ public class LoadingPhaseRunnerTest { AnalysisMock.get().setupMockClient(mockToolsConfig); FileSystemUtils.deleteTree(workspace.getRelative("base")); - PackageFactory pkgFactory = new PackageFactory(TestRuleClassProvider.getRuleClassProvider()); + PackageFactory pkgFactory = TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), fs); PackageCacheOptions options = Options.getDefaults(PackageCacheOptions.class); storedErrors = new StoredEventHandler(); BlazeDirectories directories = diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java index 5873114985..1e2034b9df 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java @@ -36,7 +36,6 @@ import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.packages.Package; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.Preprocessor; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; @@ -86,7 +85,9 @@ public class PackageCacheTest extends FoundationTestCase { TestConstants.PRODUCT_NAME); skyframeExecutor = SequencedSkyframeExecutor.create( - new PackageFactory(ruleClassProvider), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + ruleClassProvider, + scratch.getFileSystem()), directories, null, /* BinTools */ null, /* workspaceStatusActionFactory */ diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java index d964e2ddd5..44abe8843f 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java @@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.analysis.BlazeDirectories; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.ActionLookupValue.ActionLookupKey; import com.google.devtools.build.lib.testutil.TestConstants; @@ -98,7 +97,9 @@ abstract class ArtifactFunctionTestCase { SkyFunctions.WORKSPACE_FILE, new WorkspaceFileFunction( TestRuleClassProvider.getRuleClassProvider(), - new PackageFactory(TestRuleClassProvider.getRuleClassProvider()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), + root.getFileSystem()), directories)) .put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()) .put(SkyFunctions.ACTION_TEMPLATE_EXPANSION, diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java index fbfedc5349..69c68f5a8d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java @@ -39,7 +39,6 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.events.NullEventHandler; import com.google.devtools.build.lib.events.StoredEventHandler; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.testutil.ManualClock; import com.google.devtools.build.lib.testutil.TestConstants; @@ -154,7 +153,8 @@ public class FileFunctionTest { SkyFunctions.WORKSPACE_FILE, new WorkspaceFileFunction( TestRuleClassProvider.getRuleClassProvider(), - new PackageFactory(TestRuleClassProvider.getRuleClassProvider()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), fs), directories)) .put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()) .build(), diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java index 85e17805f0..b457c00aac 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java @@ -36,7 +36,6 @@ import com.google.devtools.build.lib.actions.util.TestAction; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.events.NullEventHandler; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.DirtinessCheckerUtils.BasicFilesystemDirtinessChecker; import com.google.devtools.build.lib.testutil.TestConstants; @@ -124,7 +123,8 @@ public class FilesystemValueCheckerTest { new WorkspaceASTFunction(TestRuleClassProvider.getRuleClassProvider())); skyFunctions.put(SkyFunctions.WORKSPACE_FILE, new WorkspaceFileFunction(TestRuleClassProvider.getRuleClassProvider(), - new PackageFactory(TestRuleClassProvider.getRuleClassProvider()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), fs), directories)); skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java index 336a826437..3a9565c29a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java @@ -26,7 +26,6 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.bazel.rules.BazelRulesModule; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.events.NullEventHandler; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.PackageLookupValue.ErrorReason; @@ -96,8 +95,10 @@ public class PackageLookupFunctionTest extends FoundationTestCase { SkyFunctions.WORKSPACE_FILE, new WorkspaceFileFunction( ruleClassProvider, - new PackageFactory( - ruleClassProvider, new BazelRulesModule().getPackageEnvironmentExtension()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + ruleClassProvider, + new BazelRulesModule().getPackageEnvironmentExtension(), + scratch.getFileSystem()), directories)); skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()); differencer = new RecordingDifferencer(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java index 747bb56b06..eefaf572fc 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java @@ -32,7 +32,6 @@ import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.events.NullEventHandler; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalValue.ResolvedFile; import com.google.devtools.build.lib.skyframe.RecursiveFilesystemTraversalValue.TraversalRequest; @@ -113,7 +112,8 @@ public final class RecursiveFilesystemTraversalFunctionTest extends FoundationTe new WorkspaceASTFunction(TestRuleClassProvider.getRuleClassProvider())); skyFunctions.put(SkyFunctions.WORKSPACE_FILE, new WorkspaceFileFunction(TestRuleClassProvider.getRuleClassProvider(), - new PackageFactory(TestRuleClassProvider.getRuleClassProvider()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), scratch.getFileSystem()), directories)); skyFunctions.put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 9c51cb1d5a..51fa9cfae8 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -43,7 +43,6 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.buildtool.SkyframeBuilder; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.events.StoredEventHandler; -import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.testutil.FoundationTestCase; import com.google.devtools.build.lib.testutil.TestConstants; @@ -181,7 +180,9 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { SkyFunctions.WORKSPACE_FILE, new WorkspaceFileFunction( TestRuleClassProvider.getRuleClassProvider(), - new PackageFactory(TestRuleClassProvider.getRuleClassProvider()), + TestConstants.PACKAGE_FACTORY_FACTORY_FOR_TESTING.create( + TestRuleClassProvider.getRuleClassProvider(), + scratch.getFileSystem()), directories)) .put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()) .put(SkyFunctions.ACTION_TEMPLATE_EXPANSION, diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java index 208c3788c1..612debd861 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java @@ -18,13 +18,14 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.bazel.rules.BazelRulesModule; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.packages.Package; -import com.google.devtools.build.lib.packages.PackageFactory; +import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.testutil.MoreAsserts; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; @@ -105,14 +106,18 @@ public class WorkspaceFileFunctionTest extends BuildViewTestCase { workspaceSkyFunc = new WorkspaceFileFunction( ruleClassProvider, - new PackageFactory( - ruleClassProvider, new BazelRulesModule().getPackageEnvironmentExtension()), + pkgFactory, directories); externalSkyFunc = new ExternalPackageFunction(); astSkyFunc = new WorkspaceASTFunction(ruleClassProvider); fakeWorkspaceFileValue = new FakeFileValue(); } + @Override + protected Iterable<EnvironmentExtension> getEnvironmentExtensions() { + return ImmutableList.of(new BazelRulesModule().getPackageEnvironmentExtension()); + } + private Label getLabelMapping(Package pkg, String name) throws NoSuchTargetException { return (Label) ((Rule) pkg.getTarget(name)).getAttributeContainer().getAttr("actual"); } diff --git a/src/test/java/com/google/devtools/build/lib/testutil/PackageFactoryFactoryForBazelUnitTests.java b/src/test/java/com/google/devtools/build/lib/testutil/PackageFactoryFactoryForBazelUnitTests.java new file mode 100644 index 0000000000..43dea593ab --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/testutil/PackageFactoryFactoryForBazelUnitTests.java @@ -0,0 +1,51 @@ +// Copyright 2016 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.testutil; + +import com.google.common.base.Function; +import com.google.devtools.build.lib.packages.AttributeContainer; +import com.google.devtools.build.lib.packages.Package; +import com.google.devtools.build.lib.packages.PackageFactory; +import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension; +import com.google.devtools.build.lib.packages.RuleClass; +import com.google.devtools.build.lib.packages.RuleClassProvider; +import com.google.devtools.build.lib.vfs.FileSystem; + +import java.util.Map; + +class PackageFactoryFactoryForBazelUnitTests extends PackageFactory.FactoryForTesting { + static final PackageFactoryFactoryForBazelUnitTests INSTANCE = + new PackageFactoryFactoryForBazelUnitTests(); + + private PackageFactoryFactoryForBazelUnitTests() { + } + + @Override + protected PackageFactory create( + RuleClassProvider ruleClassProvider, + Map<String, String> platformSetRegexps, + Function<RuleClass, AttributeContainer> attributeContainerFactory, + Iterable<EnvironmentExtension> environmentExtensions, + String version, + FileSystem fs) { + return new PackageFactory( + ruleClassProvider, + platformSetRegexps, + attributeContainerFactory, + environmentExtensions, + version, + Package.Builder.DefaultHelper.INSTANCE); + } +} + diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java index 5c1157579a..717c0b1c3a 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.testutil; import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy; /** @@ -77,4 +78,7 @@ public class TestConstants { public static final InvocationPolicy TEST_INVOCATION_POLICY = InvocationPolicy.getDefaultInstance(); + + public static final PackageFactory.FactoryForTesting PACKAGE_FACTORY_FACTORY_FOR_TESTING = + PackageFactoryFactoryForBazelUnitTests.INSTANCE; } |