On Wed, 16 Apr 2025 04:03:24 GMT, SendaoYan <s...@openjdk.org> wrote:

> Hi all,
> 
> The newly added test jdk/javadoc/doclet/testUnexported/TestUnexported.java 
> javac build fails. This PR add depedencies to make javac build success. 
> Test-fix only, change has been verified locally, no risk.

Marked as reviewed by jpai (Reviewer).

I spoke to Nizar and also looked at the linked JBS issue. What's happening here 
is that this test uses a test library `/tools/lib` and one of the classes 
`JavacTask` in the test library references an internal API 
`com.sun.tools.javac.api.JavacTool`. Depending on which test triggers the usage 
of this `JavacTask`, it can so happen that this test library class will get 
compiled with a different set of compilation options. I believe (and we 
experimented locally too), on our CI setup where we launch several tests, this 
test library `JavacTask` gets compiled when running a test which has the right 
set of compilation options (including the necessary `--add-exports`). Thus when 
this `TestUnexported` test gets run later, jtreg finds that the test library 
class `JavacTask` is already compiled and available in the one of the classpath 
directories of this test class. So it doesn't trigger a compilation of 
`JavacTask` and instead reuses the already compiled on. Thus we don't see this 
failure in t
 hose situations.

On setups where this is failing, including when you explicitly launch only the 
TestUnexported test (`make test 
TEST=test/langtools/jdk/javadoc/doclet/testUnexported/TestUnexported.java`), 
the test library class `JavacTask` hasn't already been compiled and thus jtreg 
triggers compilation of that class and since this specific test doesn't use a 
`@modules` for exporting those internal packages, the compilation command 
doesn't add the explicit `--add-exports` and thus the compilation fails for the 
test library `JavacTask` class.

The non-deterministic compilation of test library classes is a known issue in 
jtreg. The proposed fix in this PR to get past this issue is the right solution 
for now.

-------------

PR Review: https://git.openjdk.org/jdk/pull/24673#pullrequestreview-2775349147
PR Comment: https://git.openjdk.org/jdk/pull/24673#issuecomment-2812496384

Reply via email to