diff options
author | 2017-06-09 10:31:39 -0400 | |
---|---|---|
committer | 2017-06-09 10:57:34 -0400 | |
commit | 913478d20b3139311f27469c23a63abec67f2d55 (patch) | |
tree | c5fc09b8355eb1b810a5a14fb8ff95e2f4f349b0 /src/main/java/com/google/devtools/build/lib/rules/test | |
parent | cda9b9c31933b8c29beec6fe5fa1ed0270859d0b (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.java | 27 |
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"); + } } } |