Skip to content

Commit d90ec67

Browse files
comiuscopybara-github
authored andcommitted
Fix NPE when coveragerunner is not set on the toolchain.
Fixes bazelbuild#12619 Closes bazelbuild#12625. PiperOrigin-RevId: 345638551
1 parent d1f6b01 commit d90ec67

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java

+1
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@ public void addCoverageSupport() {
378378
if (jacocoRunner == null) {
379379
ruleContext.ruleError(
380380
"jacocorunner not set in java_toolchain:" + javaToolchain.getToolchainLabel());
381+
return;
381382
}
382383
Artifact jacocoRunnerJar = jacocoRunner.getExecutable();
383384
if (isStrict()) {

src/test/shell/bazel/bazel_java_test_defaults.sh

+34
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,38 @@ EOF
122122
expect_log "major version: 55"
123123
}
124124

125+
function test_tools_jdk_toolchain_nojacocorunner() {
126+
mkdir -p java/main
127+
cat >java/main/BUILD <<EOF
128+
java_binary(
129+
name = 'JavaBinary',
130+
srcs = ['JavaBinary.java'],
131+
main_class = 'JavaBinary',
132+
)
133+
load(
134+
"@bazel_tools//tools/jdk:default_java_toolchain.bzl",
135+
"default_java_toolchain",
136+
)
137+
default_java_toolchain(
138+
name = "default_toolchain",
139+
jacocorunner = None,
140+
visibility = ["//visibility:public"],
141+
)
142+
EOF
143+
144+
cat >java/main/JavaBinary.java <<EOF
145+
public class JavaBinary {
146+
public static void main(String[] args) {
147+
System.out.println("Successfully executed JavaBinary!");
148+
}
149+
}
150+
EOF
151+
bazel coverage java/main:JavaBinary \
152+
--java_toolchain=//java/main:default_toolchain \
153+
--javabase=@bazel_tools//tools/jdk:remote_jdk11 \
154+
--verbose_failures -s &>"${TEST_log}" \
155+
&& fail "Coverage succeeded even when jacocorunner not set"
156+
expect_log "jacocorunner not set in java_toolchain:"
157+
}
158+
125159
run_suite "Java integration tests with default Bazel values"

0 commit comments

Comments
 (0)