Thanks for the review, Jon. I agree the test is weird. I had to check it does the right thing with everything in the same directory.
I’ll rewrite it to use separate directories as you suggest. Hannes > Am 07.04.2020 um 19:32 schrieb Jonathan Gibbons <jonathan.gibb...@oracle.com>: > > Hannes, > > The test is weird, and it took me a while to understand what I think is going > on. This predates your changes, but is still very confusing. > > If I understand the code correctly, initModulesAndPackages creates both > packages and modules (which contain packages) in the same "src" directory. > The same "src" directory is then used as an argument for both the module > source path and source path, in different runs of javadoc. This is confusing, > at least to me, because you can put a module on the source path and have > javadoc recognize it as a module. But, it seems to work in the test because > the test is relying on the naming conventions for qualified module names, and > so it doesn't get confused when looking for packages or modules. But, I'm > mildly surprised javac/javadoc doesn't complain at the "packages" found on > the module source path. > > The test would be clearer if initModulesAndPackages wrote into two separate > directories, one for module source code and the other for package source > code. This would then affect/improve all the existing @Test methods by making > it clear which directory structure they are reading source code from. > > If this simple refactoring works, the review is Approved. Otherwise, I'd > like to understand the issues in more detail. > > -- Jon > > > > On 4/3/20 1:38 AM, Hannes Wallnoefer wrote: >> I realised there’s a simpler solution to the problem. Instead of using a Set >> to track packages with non-modular documentation we can just return the >> module name that matches our internal model in #checkLinkCompatibility. >> >> I also changed the JBS summary to „javadoc fails to link to docs with >> non-matching modularity“ so it covers both cases. >> >> New Webrev: http://cr.openjdk.java.net/~hannesw/8240169/webrev.01/ >> <http://cr.openjdk.java.net/~hannesw/8240169/webrev.01/> >> >> Hannes >> >> >>> Am 02.04.2020 um 16:06 schrieb Hannes Wallnoefer >>> <hannes.wallnoe...@oracle.com <mailto:hannes.wallnoe...@oracle.com>>: >>> >>> Please review: >>> >>> JBS: https://bugs.openjdk.java.net/browse/JDK-8240169 >>> <https://bugs.openjdk.java.net/browse/JDK-8240169> >>> Webrev: http://cr.openjdk.java.net/~hannesw/8240169/webrev.00/ >>> <http://cr.openjdk.java.net/~hannesw/8240169/webrev.00/> >>> >>> This patch allows using external documentation even if it doesn’t match the >>> external library in terms of modularity, i.e. non-modular documentation can >>> be used for an modular library and vice versa. Instead of showing an error >>> a warning is issued. There is still a warning if code and documentation do >>> not match, but we use the check to tweak reference lookup so that we are >>> still able to link to the appropriate documentation. >>> >>> I think that all relevant cases for combinations of modular and non-modular >>> code are covered by existing tests (some of which change with this patch >>> obviouly). >>> >>> TestLinkOptionWithAutomaticModule.java covers using a jar file as automatic >>> or unnamed module, both of which cases were already supported as of >>> JDK-8212233, so no changes there. >>> >>> TestLinkOptionWithModule.java covers all combinations of modular and >>> non-modular code and documentation. For the two tests that cover >>> non-matching combinations, I changed the expected return code to OK and >>> added expected output with the link HTML. The message about the mismatching >>> documentation is still there, but it is a warning instead of an error. >>> >>> I also added the JBS id to the @bug tag in TestLinkOptionWithModule.java as >>> well as in TestClassCrossReferences.java which is another test that >>> contains significant changes. >>> >>> Thanks, >>> Hannes >>