diff options
author | 2015-09-18 13:41:27 +0000 | |
---|---|---|
committer | 2015-09-21 08:57:16 +0000 | |
commit | 391d67ca07c15b2383e14c6bbeefd42149361626 (patch) | |
tree | 7d05d66763cab2ed43b7ed53e74f9218aa3c4e49 /src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java | |
parent | 47bc68df7d2b4d59075a0cc219b24bf9f902215b (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.java | 26 |
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()); } |