Hi Igor,

Update looks good.

Thanks,
David

On 29/08/2020 4:18 am, Igor Ignatyev wrote:
Hi David,

good point, parseArguments (or rather checkOption) does indeed validate that passed 
option is valid and has a valid value, yet for many options all values are treated 
as valid, so ill-formed command lines like  `-debugee.vmkeys="${test.vm.opts} 
${test.java.opts} -transport.address=dynamic` won't be spotted by ArgumentParser and 
its sub-classes, and I'm afraid in some cases might change tests' behavior 
unnoticeably. thus I've decided to add the check that we always have even number of 
double quotes:

diff -r 83f273f313aa test/hotspot/jtreg/vmTestbase/nsk/share/ArgumentParser.java
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/ArgumentParser.java       Thu Aug 
27 19:37:51 2020 -0700
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/ArgumentParser.java       Fri Aug 
28 11:16:24 2020 -0700
@@ -156,6 +156,10 @@
                  arg.append(" ").append(args[++i]);
                  doubleQuotes += numberOfDoubleQuotes(args[i]);
              }
+            if (doubleQuotes % 2 != 0) {
+                throw new TestBug("command-line has odd number of double quotes:" + 
String.join(" ", args));
+            }
+
              list.add(arg.toString());
          }
          setRawArguments(list.toArray(String[]::new));


Thanks,
-- Igor


On Aug 27, 2020, at 9:09 PM, David Holmes <[email protected]> wrote:

Hi Igor,

In case there may be a parsing error and the command-line is ill-formed, should 
you abort if you reach the end of the arg list without finding an even number 
of double-quotes? Or will parseArguments already handle that?

Otherwise the changes seem good.

Thanks,
David
-----

On 28/08/2020 12:39 pm, Igor Ignatyev wrote:
http://cr.openjdk.java.net/~iignatyev//8252477/webrev.00/
99 lines changed: 19 ins; 20 del; 60 mod;
Hi all,
could you please review the patch which unblocks the rest of 8219140's (get rid 
of vmTestbase/PropertyResolvingWrapper) sub-tasks?
background from JBS:
jtreg splits command line by space to get the list of arguments and there is no 
way to prevent that (nor thru escaping, nor by adding quotes). currently, 
PropertyResolvingWrapper handles that and joins multiple arguments within 
double quotes into one argument before passing it to the actual test class. the 
only place where it's needed is in the tests which use nsk/share/ArgumentParser 
(or more precisely nsk.share.jpda.DebugeeArgumentHandler and 
nsk/share/jdb/JdbArgumentHandler).

in preparation for PropertyResolvingWrapper removal, ArgumentParser should be updated to 
handle the "split" argument on its own.
I've also taken the liberty to slightly clean up ArgumentParser.
JBS: https://bugs.openjdk.java.net/browse/JDK-8252477
webrev: http://cr.openjdk.java.net/~iignatyev//8252477/webrev.00/
testing: all the tests which use ArgumentParser (:vmTestbase_nsk_aod 
:vmTestbase_nsk_jdb :vmTestbase_nsk_jdi :vmTestbase_nsk_jdw 
,:vmTestbase_nsk_jvmti :vmTestbase_vm_compiler :vmTestbase_vm_mlvm) on 
{windows,linux,macos}-x64
Thanks,
-- Igor

Reply via email to