diff options
author | elenairina <elenairina@google.com> | 2018-07-06 03:06:21 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-06 03:07:25 -0700 |
commit | 9438d1042df9e70570d245f6bd259acdfbb3455e (patch) | |
tree | 106816a832efd2a1c351966de94fe52277c70f32 /src/main/java/com/google/devtools/build/lib/analysis | |
parent | c4622ac9205d2f1b42dac8c598e83113d39e7f11 (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')
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; } } |