aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Nathan Harmata <nharmata@google.com>2016-06-10 16:17:45 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-06-10 17:16:00 +0000
commit3ad5645a5148054089c131478ae0404861f79f5d (patch)
treebd60620f2d0c918fd06e0de44230fb32d6b996e5 /src
parent4ec1e588ec7b375714fdc33b6c07be8b081f7372 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java74
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/EnvironmentGroupTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/PackageFactoryFactoryForBazelUnitTests.java51
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java4
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;
}