aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/mock
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-10-07 12:11:50 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-10-08 12:11:15 +0000
commitfdc46c9d1c731b76a8b61393d36cf3ee9edad46d (patch)
tree6e77192adfe26baded46fa9d0ef7ab0b3ece0faf /src/test/java/com/google/devtools/build/lib/analysis/mock
parent76c0e498deb29beeeeaa19595f50d2524c16c0aa (diff)
Pass in a set of SkyFunctions in AnalysisMock.
This is required because Bazel will get tools from an external repository, and thus tests will need to support external repositories. This code is currently unused and was lopped off of a git branch I maintain locally that contains a Bazel version that gets tools from an external repository. -- MOS_MIGRATED_REVID=104851767
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/mock')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index e34a4851ed..88c019da89 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -18,16 +18,22 @@ import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import com.google.common.base.Functions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
+import com.google.common.collect.ImmutableMap;
import com.google.common.io.ByteStreams;
+import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
+import com.google.devtools.build.lib.bazel.repository.LocalRepositoryFunction;
+import com.google.devtools.build.lib.bazel.repository.RepositoryDelegatorFunction;
+import com.google.devtools.build.lib.bazel.repository.RepositoryFunction;
import com.google.devtools.build.lib.bazel.rules.BazelConfiguration;
import com.google.devtools.build.lib.bazel.rules.BazelConfigurationCollection;
import com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider;
import com.google.devtools.build.lib.bazel.rules.android.AndroidRepositoryRules;
import com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration;
+import com.google.devtools.build.lib.bazel.rules.workspace.LocalRepositoryRule;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.util.MockToolsConfig;
@@ -38,9 +44,12 @@ import com.google.devtools.build.lib.rules.java.JavaConfigurationLoader;
import com.google.devtools.build.lib.rules.java.JvmConfigurationLoader;
import com.google.devtools.build.lib.rules.objc.ObjcConfigurationLoader;
import com.google.devtools.build.lib.rules.python.PythonConfigurationLoader;
+import com.google.devtools.build.lib.skyframe.SkyFunctions;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
+import com.google.devtools.build.skyframe.SkyFunction;
+import com.google.devtools.build.skyframe.SkyFunctionName;
import java.io.IOException;
import java.io.InputStream;
@@ -48,6 +57,7 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
public class BazelAnalysisMock extends AnalysisMock {
public static final AnalysisMock INSTANCE = new BazelAnalysisMock();
@@ -238,4 +248,20 @@ public class BazelAnalysisMock extends AnalysisMock {
public ImmutableList<Class<? extends FragmentOptions>> getBuildOptions() {
return BazelRuleClassProvider.BUILD_OPTIONS;
}
+
+ @Override
+ public ImmutableMap<SkyFunctionName, SkyFunction> getSkyFunctions(BlazeDirectories directories) {
+ // Bazel will access tools using a local_repository rule, thus, we need to support those rules
+ // in test cases, too. So we need the appropriate SkyFunctions.
+ RepositoryFunction localRepositoryFunction = new LocalRepositoryFunction();
+ localRepositoryFunction.setDirectories(directories);
+ ImmutableMap<String, RepositoryFunction> repositoryHandlers = ImmutableMap.of(
+ LocalRepositoryRule.NAME, localRepositoryFunction);
+
+ return ImmutableMap.of(
+ SkyFunctions.REPOSITORY,
+ new RepositoryDelegatorFunction(directories, repositoryHandlers, new AtomicBoolean(true)),
+ localRepositoryFunction.getSkyFunctionName(),
+ localRepositoryFunction);
+ }
}