From 391d67ca07c15b2383e14c6bbeefd42149361626 Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Fri, 18 Sep 2015 13:41:27 +0000 Subject: 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 --- .../lib/rules/test/InstrumentedFilesCollector.java | 26 ++++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java') 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 instrumentedFilesBuilder = NestedSetBuilder.stableOrder(); NestedSetBuilder metadataFilesBuilder = NestedSetBuilder.stableOrder(); - NestedSetBuilder baselineCoverageArtifactsBuilder = NestedSetBuilder.stableOrder(); + NestedSetBuilder baselineCoverageInstrumentedFilesBuilder = + NestedSetBuilder.stableOrder(); Iterable 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 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 baselineCoverageFiles = baselineCoverageInstrumentedFilesBuilder.build(); + + // Create one baseline coverage action per target, but for the transitive closure of files. + NestedSet baselineCoverageArtifacts = + BaselineCoverageAction.create(ruleContext, baselineCoverageFiles); return new InstrumentedFilesProviderImpl(instrumentedFilesBuilder.build(), metadataFilesBuilder.build(), - baselineCoverageArtifactsBuilder.build(), + baselineCoverageFiles, + baselineCoverageArtifacts, ImmutableMap.of()); } -- cgit v1.2.3