aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2018-07-06 03:06:21 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-06 03:07:25 -0700
commit9438d1042df9e70570d245f6bd259acdfbb3455e (patch)
tree106816a832efd2a1c351966de94fe52277c70f32 /src/main/java/com/google/devtools/build/lib/analysis
parentc4622ac9205d2f1b42dac8c598e83113d39e7f11 (diff)
Create Bazel coverage report action.
Fixes #5246 RELNOTES: None. PiperOrigin-RevId: 203453340
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java7
6 files changed, 15 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index 11b1ec3eab..4c4c501d07 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -190,8 +190,7 @@ public class BaseRuleClasses {
.cfg(HostTransition.INSTANCE)
.value(
coverageReportGeneratorAttribute(
- env.getToolsLabel(DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE)))
- .singleArtifact())
+ env.getToolsLabel(DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE))))
// The target itself and run_under both run on the same machine.
.add(attr(":run_under", LABEL).value(RUN_UNDER).skipPrereqValidatorCheck())
.executionPlatformConstraintsAllowed(ExecutionPlatformConstraintsAllowed.PER_TARGET)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 204d94931e..2143efaa19 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -404,7 +404,8 @@ public class BuildView {
allTargetsToTest,
baselineCoverageArtifacts,
getArtifactFactory(),
- CoverageReportValue.COVERAGE_REPORT_KEY);
+ CoverageReportValue.COVERAGE_REPORT_KEY,
+ loadingResult.getWorkspaceName());
if (actionsWrapper != null) {
ImmutableList<ActionAnalysisMetadata> actions = actionsWrapper.getActions();
skyframeExecutor.injectCoverageReportData(actions);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index ad4ecc4086..34cd54fd8c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -197,8 +197,7 @@ public class SkylarkRuleClassFunctions implements SkylarkRuleFunctionsApi<Artifa
BaseRuleClasses.coverageReportGeneratorAttribute(
labelCache.getUnchecked(
toolsRepository
- + BaseRuleClasses.DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE)))
- .singleArtifact())
+ + BaseRuleClasses.DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE))))
.add(attr(":run_under", LABEL).value(RUN_UNDER))
.executionPlatformConstraintsAllowed(ExecutionPlatformConstraintsAllowed.PER_TARGET)
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
index e5678f389a..24750a4505 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
@@ -66,5 +66,7 @@ public interface CoverageReportActionFactory {
BlazeDirectories directories,
Collection<ConfiguredTarget> targetsToTest,
Iterable<Artifact> baselineCoverageArtifacts,
- ArtifactFactory artifactFactory, ArtifactOwner artifactOwner);
+ ArtifactFactory artifactFactory,
+ ArtifactOwner artifactOwner,
+ String workspaceName);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
index e421c15596..7fe18a2300 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
@@ -323,13 +323,14 @@ public final class TestActionBuilder {
}
}
// TODO(bazel-team): Passing the reportGenerator to every TestParams is a bit strange.
- Artifact reportGenerator = null;
+ FilesToRunProvider reportGenerator = null;
if (config.isCodeCoverageEnabled()) {
// It's not enough to add this if the rule has coverage enabled because the command line may
// contain rules with baseline coverage but no test rules that have coverage enabled, and in
// that case, we still need the report generator.
- reportGenerator = ruleContext.getPrerequisiteArtifact(
- ":coverage_report_generator", Mode.HOST);
+ TransitiveInfoCollection reportGeneratorTarget =
+ ruleContext.getPrerequisite(":coverage_report_generator", Mode.HOST);
+ reportGenerator = reportGeneratorTarget.getProvider(FilesToRunProvider.class);
}
return new TestParams(runsPerTest, shards, TestTimeout.getTestTimeout(ruleContext.getRule()),
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java
index ce99d72e69..f356deb4bc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.analysis.test;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -71,7 +72,7 @@ public final class TestProvider implements TransitiveInfoProvider {
private final String testRuleClass;
private final ImmutableList<Artifact> testStatusArtifacts;
private final ImmutableList<Artifact> coverageArtifacts;
- private final Artifact coverageReportGenerator;
+ private final FilesToRunProvider coverageReportGenerator;
/**
* Don't call this directly. Instead use
@@ -80,7 +81,7 @@ public final class TestProvider implements TransitiveInfoProvider {
TestParams(int runs, int shards, TestTimeout timeout, String testRuleClass,
ImmutableList<Artifact> testStatusArtifacts,
ImmutableList<Artifact> coverageArtifacts,
- Artifact coverageReportGenerator) {
+ FilesToRunProvider coverageReportGenerator) {
this.runs = runs;
this.shards = shards;
this.timeout = timeout;
@@ -136,7 +137,7 @@ public final class TestProvider implements TransitiveInfoProvider {
/**
* Returns the coverage report generator tool.
*/
- public Artifact getCoverageReportGenerator() {
+ public FilesToRunProvider getCoverageReportGenerator() {
return coverageReportGenerator;
}
}