On Tue, 24 May 2022 18:39:06 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

>> Please review a test-only fix to make a recent new test more robust.
>> 
>> The test was not fundamentally broken, so the essential functionality 
>> remains the same. However, it does assume access to the `src/jdk.javadoc` 
>> directory, and crashed when that was not available.
>> 
>> The mitigation is two-fold: 
>> 
>> 1. introduce and use a new `SnippetUtils.ConfigurationException` that is 
>> thrown when the test cannot find the necessary directories.
>> 2. introduce and use 2 new test-suite keywords, `needs-src` 
>> `needs-src-jdk_javadoc` that can be used on the jtreg command-line to filter 
>> out this test, and any similar tests in the future.
>> 
>> Tested locally, manually, by temporarily renaming key directories, to test 
>> the different code paths.  In all cases, if the test is run and any 
>> necessary directories are missing, the test _will still fail_, but now with 
>> a more useful and specific exception and detail message.
>
> test/langtools/jdk/javadoc/doclet/testDocletExample/TestDocletExample.java 
> line 71:
> 
>> 69:         var entryPointSnippet = snippets.getSnippetById(dc, 
>> "entry-point");
>> 70:         if (entryPointSnippet == null) {
>> 71:             throw new Error("Cannot find snippet \"entry-point\"");
> 
> I understand it as follows. Although this code now throws generic `Error` 
> instead of `NullPointerException`, which the bug reporter observed, we 
> shouldn't see that `Error` in circumstances similar to those of bug reporter. 
> This is because in those circumstances the code will throw 
> `ConfigurationException` earlier, at construction time, so we won't reach 
> this check. Do I understand it correctly?

Yes. Although we could throw NPE even here, I was wanting to throw something 
that indicates the test is dysfunctional, as compared to failing or crashing.

> test/langtools/jdk/javadoc/doclet/testDocletExample/TestDocletExample.java 
> line 97:
> 
>> 95:         var dc = snippets.getDocTrees().getDocCommentTree(docletPkg);
>> 96:         var exampleSnippet = snippets.getSnippetById(dc, "Example.java");
>> 97:         if (exampleSnippet == null) {
> 
> Same as above.

Yes, same reasoning. `SnippetUtils` is broken if we get a null result.

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

PR: https://git.openjdk.java.net/jdk/pull/8796

Reply via email to