Skip to content

Commit cd556cc

Browse files
authored
Take --instrumentation_filter into account in coverage phase (#1377)
Previously, all Scala code would be instrumented for coverage during a bazel coverage run instead of only those source files that belong to targets matching the instrumentation filter. Fixes bazelbuild/bazel#15167.
1 parent 0b2bd39 commit cd556cc

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

scala/private/phases/phase_coverage.bzl

+14-12
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,20 @@ def _phase_coverage_default(ctx, p, _args = struct()):
2626
)
2727

2828
def _phase_coverage(ctx, p, srcjars):
29-
if len(ctx.files.srcs) + len(srcjars.to_list()) == 0 or not ctx.configuration.coverage_enabled:
29+
instrumented_files_provider = coverage_common.instrumented_files_info(
30+
ctx,
31+
source_attributes = ["srcs"],
32+
dependency_attributes = _coverage_replacements_provider.dependency_attributes,
33+
extensions = ["scala", "java"],
34+
)
35+
external_providers = {
36+
"InstrumentedFilesInfo": instrumented_files_provider,
37+
}
38+
39+
if len(ctx.files.srcs) + len(srcjars.to_list()) == 0 or not ctx.coverage_instrumented():
3040
return struct(
3141
replacements = {},
32-
external_providers = {},
42+
external_providers = external_providers,
3343
)
3444
else:
3545
input_jar = ctx.outputs.jar
@@ -57,16 +67,8 @@ def _phase_coverage(ctx, p, srcjars):
5767
provider = _coverage_replacements_provider.create(
5868
replacements = replacements,
5969
)
60-
instrumented_files_provider = coverage_common.instrumented_files_info(
61-
ctx,
62-
source_attributes = ["srcs"],
63-
dependency_attributes = _coverage_replacements_provider.dependency_attributes,
64-
extensions = ["scala", "java"],
65-
)
70+
external_providers["_CoverageReplacements"] = provider
6671
return struct(
6772
replacements = replacements,
68-
external_providers = {
69-
"_CoverageReplacements": provider,
70-
"InstrumentedFilesInfo": instrumented_files_provider,
71-
},
73+
external_providers = external_providers,
7274
)

test/shell/test_coverage_scalatest_resources.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
55
runner=$(get_test_runner "${1:-local}")
66

77
test_coverage_succeeds_resource_call() {
8-
bazel coverage //test/coverage_scalatest_resources/consumer:tests
8+
bazel coverage \
9+
--instrumentation_filter=^//test/coverage_scalatest_resources[:/] \
10+
//test/coverage_scalatest_resources/consumer:tests
911
diff test/coverage_scalatest_resources/expected-coverage.dat $(bazel info bazel-testlogs)/test/coverage_scalatest_resources/consumer/tests/coverage.dat
1012
}
1113

0 commit comments

Comments
 (0)