> On Oct 11, 2016, at 1:35 PM, Alexandre (Shura) Iline 
> <alexandre.il...@oracle.com> wrote:
> 
> 
>> On Oct 10, 2016, at 2:54 AM, Alan Bateman <alan.bate...@oracle.com> wrote:
>> 
>> On 07/10/2016 21:24, Alexandre (Shura) Iline wrote:
>> 
>>> Hi,
>>> 
>>> Please review a fix for https://bugs.openjdk.java.net/browse/JDK-8159523
>>> 
>>> To recap what has happened in the past.
>>> 
>>> 1. An attempt was made to enhance jdk.testlibrary.ProcessTools class to 
>>> support some filtering java and VM options. That implementation came out 
>>> really overloaded (check executeModularTest(...) in [1]).
>>> 2. It was suggested that a builder API could be introduced instead. 
>>> “toolbox” classes from langtools test library were suggested as a start [2].
>>> 3. Further on, it was agreed that the classes need to be copied into the 
>>> JDK test library rather than updated in place or somehow else shared 
>>> between langtools and jdk test libraries.
>>> 
>>> I have started porting a few tasks (JavaTask, JavacTask and JarTask) only 
>>> to realize that there are many questions which may cause design 
>>> discussions. So, instead, I have rolled back to one class (JavaTask) and 
>>> the superclasses. If the design is acceptable, more tasks could be added as 
>>> needed.
>>> 
>>> The webrev: http://cr.openjdk.java.net/~shurailine/8159523/webrev.01/
>>> 
>> At a high-level then the approach looks reasonable, just lots of details to 
>> get agreement on before doing a big conversion.
>> 
>> One thing that jumps out is that JavaTask doesn't seem to handle repeated 
>> options, I'll assume that will be fixed.
> 
> Do you think there are many cases in the test code with the repeated options? 
> the current implementation allows lists for --add-modules, —add-exports, I 
> would also do it where it makes sense for other options. For negative testing 
> then there is vmOptions, which could contain anything.

Actually —add-exports is implemented incorrectly. I see the point now. 

Thanks.

Shura

> 
> Not that I had anything against supporting multiple options. Just trying to 
> better understand the use case.
> 
>> 
>> In the examples then I suspect that "mainClass" be be clearer than 
>> "className". Also "module" might work better than "moduleName". One thing 
>> you could look at for the module method is an overload that takes 2 
>> parameters, the module name and main class. Another suggestion is methods 
>> such as modulepath (modulePath?)
> 
> Then classPath also, I think. It was “classpath” in the original source, so I 
> added “modulepath”.
> 
>> should have an overload that takes a Path for the common cases where tests 
>> just specify one path element - if have those then a lot of calls to 
>> toString go away.
> 
> The other idea I had is to use varargs for the paths: modulePath(String... 
> modulePath) and modulePath(Path... modulePath). That would allow to avoid the 
> concatenation in the test code.
> 
>> 
>> One discussion point is whether it should support all options. I note the 
>> usage in one of the examples:
>> 
>> .vmOptions("--upgrade-module-path", UPGRADE_MODS_DIRS.toString())
>> .modulepath(MODS_DIR.toString())
>> 
>> where
>> 
>> .upgradeModulePath(UPGRADE_MODS)
>> .modulePath(MODS_DIRS)
>> 
>> would be clearer.
> 
> I will add all the missing options.
> 
> Shura
> 
>> 
>> Anyway, these are just some passing comments, I do agree that the tests 
>> using ProcessTools could be more readable.
>> 
>> -Alan.
> 

Reply via email to