Merge pull request #13737 from jasontedor/cli-parameter-order-error-message

More helpful error message on parameter order
This commit is contained in:
Jason Tedor 2015-09-23 10:14:13 -04:00
commit 8d1d8f9c46
2 changed files with 17 additions and 1 deletions

View File

@ -128,7 +128,13 @@ final class BootstrapCLIParser extends CliTool {
while (iterator.hasNext()) {
String arg = iterator.next();
if (!arg.startsWith("--")) {
throw new IllegalArgumentException("Parameter [" + arg + "]does not start with --");
if (arg.startsWith("-D") || arg.startsWith("-d") || arg.startsWith("-p")) {
throw new IllegalArgumentException(
"Parameter [" + arg + "] starting with \"-D\", \"-d\" or \"-p\" must be before any parameters starting with --"
);
} else {
throw new IllegalArgumentException("Parameter [" + arg + "]does not start with --");
}
}
// if there is no = sign, we have to get the next argu
arg = arg.replace("--", "");

View File

@ -220,6 +220,16 @@ public class BootstrapCliParserTests extends CliToolTestCase {
}
public void testThatHelpfulErrorMessageIsGivenWhenParametersAreOutOfOrder() throws Exception {
BootstrapCLIParser parser = new BootstrapCLIParser(terminal);
try {
parser.parse("start", new String[]{"--foo=bar", "-Dbaz=qux"});
fail("expected IllegalArgumentException for out-of-order parameters");
} catch (IllegalArgumentException e) {
assertThat(e.getMessage(), containsString("must appear before any parameters starting with --"));
}
}
private void registerProperties(String ... systemProperties) {
propertiesToClear.addAll(Arrays.asList(systemProperties));
}