From e8c39062abe4ef3353a075ad9ff267e18800fcbb Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Thu, 10 Dec 2020 09:31:08 +0100 Subject: [PATCH] Move the code to set system properties to its own method, make sure it's called from JvmTestClient --- .../mvndaemon/mvnd/client/DefaultClient.java | 36 ++++++++++--------- .../mvndaemon/mvnd/junit/JvmTestClient.java | 1 + 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java b/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java index 33d2af13..b31ccd9d 100644 --- a/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java +++ b/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java @@ -30,7 +30,6 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Iterator; import java.util.List; import java.util.concurrent.atomic.AtomicReference; import org.fusesource.jansi.Ansi; @@ -82,22 +81,7 @@ public class DefaultClient implements Client { boolean batchMode = Environment.MAVEN_BATCH_MODE.hasCommandLineOption(args); // System properties - for (Iterator it = args.iterator(); it.hasNext();) { - String arg = it.next(); - String val = Environment.MAVEN_DEFINE.removeCommandLineOption(new ArrayList<>(Collections.singletonList(arg))); - if (val != null) { - if (val.isEmpty()) { - throw new IllegalArgumentException("Missing argument for option " + arg); - } - /* This needs to be done very early, otherwise various DaemonParameters do not work properly */ - final int eqPos = val.indexOf('='); - if (eqPos >= 0) { - System.setProperty(val.substring(2, eqPos), val.substring(eqPos + 1)); - } else { - System.setProperty(val.substring(2), ""); - } - } - } + setSystemPropertiesFromCommandLine(args); DaemonParameters parameters = new DaemonParameters(); if (parameters.serial()) { @@ -122,6 +106,24 @@ public class DefaultClient implements Client { System.exit(exitCode); } + public static void setSystemPropertiesFromCommandLine(List args) { + for (String arg : args) { + String val = Environment.MAVEN_DEFINE.removeCommandLineOption(new ArrayList<>(Collections.singletonList(arg))); + if (val != null) { + if (val.isEmpty()) { + throw new IllegalArgumentException("Missing argument for option " + arg); + } + /* This needs to be done very early, otherwise various DaemonParameters do not work properly */ + final int eqPos = val.indexOf('='); + if (eqPos >= 0) { + System.setProperty(val.substring(0, eqPos), val.substring(eqPos + 1)); + } else { + System.setProperty(val, ""); + } + } + } + } + public DefaultClient(DaemonParameters parameters) { this.parameters = parameters; } diff --git a/integration-tests/src/test/java/org/mvndaemon/mvnd/junit/JvmTestClient.java b/integration-tests/src/test/java/org/mvndaemon/mvnd/junit/JvmTestClient.java index 839be95b..283edfc3 100644 --- a/integration-tests/src/test/java/org/mvndaemon/mvnd/junit/JvmTestClient.java +++ b/integration-tests/src/test/java/org/mvndaemon/mvnd/junit/JvmTestClient.java @@ -30,6 +30,7 @@ public class JvmTestClient extends DefaultClient { @Override public ExecutionResult execute(ClientOutput output, List argv) { + setSystemPropertiesFromCommandLine(argv); final ExecutionResult delegate = super.execute(output, argv); if (output instanceof TestClientOutput) { return new JvmTestResult(delegate, ((TestClientOutput) output).messagesToString());