aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/test
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2017-06-09 10:31:39 -0400
committerGravatar John Cater <jcater@google.com>2017-06-09 10:57:34 -0400
commit913478d20b3139311f27469c23a63abec67f2d55 (patch)
treec5fc09b8355eb1b810a5a14fb8ff95e2f4f349b0 /src/main/java/com/google/devtools/build/lib/rules/test
parentcda9b9c31933b8c29beec6fe5fa1ed0270859d0b (diff)
Use the correct JVM for LcovMerger instead of whatever "java" gets us.
Fixes #2904. RELNOTES: None. PiperOrigin-RevId: 158516169
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/test')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
index 9deb11fbf2..6de3553c34 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
@@ -17,15 +17,18 @@ package com.google.devtools.build.lib.rules.test;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
+import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.PrerequisiteArtifacts;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RunfilesSupport;
+import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -211,12 +214,24 @@ public final class TestActionBuilder {
ruleContext, "$coverage_support", Mode.DONT_CHECK));
// We don't add this attribute to non-supported test target
if (ruleContext.isAttrDefined("$lcov_merger", LABEL)) {
- Artifact lcovMerger = ruleContext.getPrerequisiteArtifact("$lcov_merger", Mode.TARGET);
- if (lcovMerger != null) {
- inputsBuilder.addTransitive(
- PrerequisiteArtifacts.nestedSet(ruleContext, "$lcov_merger", Mode.TARGET));
- // Pass this LcovMerger_deploy.jar path to collect_coverage.sh
- extraTestEnv.put("LCOV_MERGER", lcovMerger.getExecPathString());
+ TransitiveInfoCollection lcovMerger =
+ ruleContext.getPrerequisite("$lcov_merger", Mode.TARGET);
+ FilesToRunProvider lcovFilesToRun = lcovMerger.getProvider(FilesToRunProvider.class);
+ if (lcovFilesToRun != null) {
+ extraTestEnv.put("LCOV_MERGER", lcovFilesToRun.getExecutable().getExecPathString());
+ inputsBuilder.addTransitive(lcovFilesToRun.getFilesToRun());
+ } else {
+ NestedSet<Artifact> filesToBuild =
+ lcovMerger.getProvider(FileProvider.class).getFilesToBuild();
+
+ if (Iterables.size(filesToBuild) == 1) {
+ Artifact lcovMergerArtifact = Iterables.getOnlyElement(filesToBuild);
+ extraTestEnv.put("LCOV_MERGER", lcovMergerArtifact.getExecPathString());
+ inputsBuilder.add(lcovMergerArtifact);
+ } else {
+ ruleContext.attributeError("$lcov_merger",
+ "the LCOV merger should be either an executable or a single artifact");
+ }
}
}