diff options
author | 2015-10-07 12:11:50 +0000 | |
---|---|---|
committer | 2015-10-08 12:11:15 +0000 | |
commit | fdc46c9d1c731b76a8b61393d36cf3ee9edad46d (patch) | |
tree | 6e77192adfe26baded46fa9d0ef7ab0b3ece0faf /src/test/java/com/google/devtools/build/lib/analysis/mock | |
parent | 76c0e498deb29beeeeaa19595f50d2524c16c0aa (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.java | 26 |
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); + } } |