aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2015-09-18 13:41:27 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-09-21 08:57:16 +0000
commit391d67ca07c15b2383e14c6bbeefd42149361626 (patch)
tree7d05d66763cab2ed43b7ed53e74f9218aa3c4e49 /src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java
parent47bc68df7d2b4d59075a0cc219b24bf9f902215b (diff)
Partially revert change to collect baseline coverage from individual libraries.
We still want to do that, but not like this. Our infrastructure supports per-target coverage, and so we also need to support per-target baseline coverage. I'm working on better documentation (not hard to be better than no docs), which will cover this. I left a couple of TODOs to explain how we want to do it in the future. -- MOS_MIGRATED_REVID=103379710
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java b/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java
index b7828697f8..b6096b30b2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java
@@ -65,7 +65,8 @@ public final class InstrumentedFilesCollector {
NestedSetBuilder<Artifact> instrumentedFilesBuilder = NestedSetBuilder.stableOrder();
NestedSetBuilder<Artifact> metadataFilesBuilder = NestedSetBuilder.stableOrder();
- NestedSetBuilder<Artifact> baselineCoverageArtifactsBuilder = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact> baselineCoverageInstrumentedFilesBuilder =
+ NestedSetBuilder.stableOrder();
Iterable<TransitiveInfoCollection> prereqs = getAllPrerequisites(ruleContext, spec);
@@ -75,7 +76,8 @@ public final class InstrumentedFilesCollector {
if (provider != null) {
instrumentedFilesBuilder.addTransitive(provider.getInstrumentedFiles());
metadataFilesBuilder.addTransitive(provider.getInstrumentationMetadataFiles());
- baselineCoverageArtifactsBuilder.addTransitive(provider.getBaselineCoverageArtifacts());
+ baselineCoverageInstrumentedFilesBuilder.addTransitive(
+ provider.getBaselineCoverageInstrumentedFiles());
}
}
@@ -84,6 +86,8 @@ public final class InstrumentedFilesCollector {
if (shouldIncludeLocalSources(ruleContext)) {
NestedSetBuilder<Artifact> localSourcesBuilder = NestedSetBuilder.stableOrder();
for (TransitiveInfoCollection dep : prereqs) {
+ // TODO(ulfjack): Use different sets of attributes to collect transitive instrumentation
+ // data and to collect local sources, and then remove this if-statement.
if (dep.getProvider(InstrumentedFilesProvider.class) != null) {
continue;
}
@@ -97,6 +101,12 @@ public final class InstrumentedFilesCollector {
localSources = localSourcesBuilder.build();
}
instrumentedFilesBuilder.addTransitive(localSources);
+ if (withBaselineCoverage) {
+ // Also add the local sources to the baseline coverage instrumented sources, if the current
+ // rule supports baseline coverage.
+ // TODO(ulfjack): Generate a local baseline coverage action, and then merge at the leaves.
+ baselineCoverageInstrumentedFilesBuilder.addTransitive(localSources);
+ }
// Local metadata files.
if (localMetadataCollector != null) {
@@ -105,13 +115,15 @@ public final class InstrumentedFilesCollector {
}
// Baseline coverage actions.
- if (withBaselineCoverage) {
- baselineCoverageArtifactsBuilder.addTransitive(
- BaselineCoverageAction.getBaselineCoverageArtifacts(ruleContext, localSources));
- }
+ NestedSet<Artifact> baselineCoverageFiles = baselineCoverageInstrumentedFilesBuilder.build();
+
+ // Create one baseline coverage action per target, but for the transitive closure of files.
+ NestedSet<Artifact> baselineCoverageArtifacts =
+ BaselineCoverageAction.create(ruleContext, baselineCoverageFiles);
return new InstrumentedFilesProviderImpl(instrumentedFilesBuilder.build(),
metadataFilesBuilder.build(),
- baselineCoverageArtifactsBuilder.build(),
+ baselineCoverageFiles,
+ baselineCoverageArtifacts,
ImmutableMap.<String, String>of());
}