aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/bazel
diff options
context:
space:
mode:
authorGravatar Irina Iancu <elenairina@google.com>2018-07-23 06:59:14 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-23 07:00:23 -0700
commit8fcc07aebb677566de6c53b5ab57f124a840cf60 (patch)
tree2aac5d9cbe6462c73fd8ce0b7d3b3eabb17b1e39 /src/main/java/com/google/devtools/build/lib/bazel
parent6bc22d571b17853a7e6c2c4b6776a1c833c63ce3 (diff)
Collect code coverage for binaries invoked via sh_test.
Fixes #5331. Change-Id: Idb01a3f206ed37992f200f7e0e51ed9831262613 RELNOTES: Code coverage is collected for Java binaries invoked from sh_test. PiperOrigin-RevId: 205654442
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/bazel')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/sh/BazelShTestRule.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java11
2 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/BazelShTestRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/BazelShTestRule.java
index d46cf2882a..20d8ce9c90 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/BazelShTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/BazelShTestRule.java
@@ -35,6 +35,12 @@ public final class BazelShTestRule implements RuleDefinition {
if (launcher != null) {
builder.add(attr("$launcher", LABEL).cfg(HostTransition.INSTANCE).value(launcher));
}
+ // TODO(bazel-team): Add $lcov_merger to every test rule as opposed to particular rules.
+ builder.add(
+ attr("$lcov_merger", LABEL)
+ .value(
+ Label.parseAbsoluteUnchecked(
+ "@bazel_tools//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Main")));
return builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java
index 72545267cf..d787073208 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java
@@ -31,8 +31,12 @@ import com.google.devtools.build.lib.analysis.actions.Substitution;
import com.google.devtools.build.lib.analysis.actions.Template;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.util.FileTypeSet;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -93,6 +97,13 @@ public class ShBinary implements RuleConfiguredTargetFactory {
.setFilesToBuild(filesToBuild)
.setRunfilesSupport(runfilesSupport, mainExecutable)
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
+ .addProvider(
+ InstrumentedFilesProvider.class,
+ InstrumentedFilesCollector.collect(
+ ruleContext,
+ new InstrumentationSpec(FileTypeSet.NO_FILE),
+ InstrumentedFilesCollector.NO_METADATA_COLLECTOR,
+ filesToBuild))
.build();
}