diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java')
-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); + } } |