jdk
jdk copied to clipboard
8332474: Tighten up ToolBox' JavacTask to not silently accept javac crash as a failure
Tests for javac use several test frameworks, and one of them is the "toolbox", which provides JavacTask
that allows to conveniently run javac on a given set of sources. The problem with JavacTask
is that, by default, when a compilation failure is expected, javac crash (exit code 4) is tolerated by the JavacTask
. And the test must manually select a specific exit code to overwrite this behavior.
This then leads to bugs like https://bugs.openjdk.org/browse/JDK-8335385, which are silently ignored by JavacTask
.
The proposal herein is to tighten up the JavacTask
, and effectively disallow exit code 4 for JavacTask
(but permit any other exit code, as javac is using several exit codes). The base implementation in AbstractTask
is changed to use a validator for the exit codes, which is then leveraged by JavacTask
.
This patch depends on PR #19969, as that fixes JDK-8335385, where the javac crash is ignored. It also tweaks module attribution to not leave empty JCModuleDecl.sym
for duplicate modules, and set it to an erroneous module. The empty (null
) symbol here crashes javac in the test/langtools/tools/javac/modules/MultiModuleModeTest.java#testDuplicateModules
, and the test wouldn't pass with this more strict JavacTask
.
Progress
- [x] Change must be properly reviewed (1 review required, with at least 1 Reviewer)
- [x] Change must not contain extraneous whitespace
- [x] Commit message must refer to an issue
Integration blocker
⚠️ Dependency #19969 must be integrated first
Issue
- JDK-8332474: Tighten up ToolBox' JavacTask to not silently accept javac crash as a failure (Task - P4)
Reviewers
- Vicente Romero (@vicente-romero-oracle - Reviewer)
Reviewing
Using git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/19972/head:pull/19972
$ git checkout pull/19972
Update a local copy of the PR:
$ git checkout pull/19972
$ git pull https://git.openjdk.org/jdk.git pull/19972/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 19972
View PR using the GUI difftool:
$ git pr show -t 19972
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/19972.diff