Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -896,29 +896,38 @@ static boolean isMultiThreadedMvnd(List<String> params) {
if (p.equals("-1") || p.equals("--serial") || p.equals("-Dmvnd.serial")) { // "behave like standard maven" mode
return false;
}
if (i + 1 < params.size() && (p.equals("-T") || p.equals("--threads"))) {
if (params.get(i+1).equals("1")) {
return false;
}
}
try {
if (p.startsWith("-Dmvnd.threads=") && Integer.parseInt(p.substring(15)) == 1) {
return false;
}
} catch (NumberFormatException ignored) {}
} catch (NumberFormatException ignored) {}
}
return true;
String threads = threadsArgValue(params);
return threads == null || !threads.equals("1");
}

// mvn is ST by default
static boolean isMultiThreadedMaven(List<String> params) {
for (int i = 0; i < params.size() - 1; i++) {
String threads = threadsArgValue(params);
return threads != null && !threads.equals("1");
}

// Recognizes -T <n>, -T<n>, --threads <n>, --threads=<n>; #9337
// The suffix is returned verbatim - Maven validates the value itself, so anything other than "1" is treated as multi-threaded by callers.
private static String threadsArgValue(List<String> params) {
for (int i = 0; i < params.size(); i++) {
String p = params.get(i);
if ((p.equals("-T") || p.equals("--threads")) && !params.get(i+1).equals("1")) {
return true;
if (p.equals("-T") || p.equals("--threads")) {
if (i + 1 < params.size()) {
return params.get(i + 1);
}
} else if (p.startsWith("-T") && p.length() > 2) {
return p.substring(2);
} else if (p.startsWith("--threads=")) {
return p.substring("--threads=".length());
}
}
return false;
return null;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,42 @@ public void validateSingleThreaded2() {
assertFalse(isMultiThreadedMaven("-T 1"));
}

// #9337 — compact -T<n> form
@Test
public void validateMultiThreadedCompactT2() {
assertTrue(isMultiThreadedMaven("-T2"));
}

@Test
public void validateMultiThreadedCompactT10() {
assertTrue(isMultiThreadedMaven("-T10 -Dmaven.test.skip=true"));
}

@Test
public void validateMultiThreadedCompactT1C() {
assertTrue(isMultiThreadedMaven("-T1C"));
}

@Test
public void validateSingleThreadedCompactT1() {
assertFalse(isMultiThreadedMaven("-T1"));
}

@Test
public void validateMultiThreadedThreadsEquals() {
assertTrue(isMultiThreadedMaven("--threads=2"));
}

@Test
public void validateSingleThreadedThreadsEquals1() {
assertFalse(isMultiThreadedMaven("--threads=1"));
}

@Test
public void validateDanglingTFlagIsNotMultiThreaded() {
assertFalse(isMultiThreadedMaven("-T"));
}

private boolean isMultiThreadedMaven(String params) {
return MavenCommandLineExecutor.isMultiThreadedMaven(Arrays.asList(params.split(" ")));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,38 @@ public void validateSingleThreaded8() {
assertTrue(checkisMultiThreadedMvnd("-Dmvnd.threads=foo -Dmaven.test.skip=true"));
}

// #9337 — compact -T<n> form
@Test
public void validateMultiThreadedCompactT2() {
assertTrue(checkisMultiThreadedMvnd("-T2"));
}

@Test
public void validateSingleThreadedCompactT1() {
assertFalse(checkisMultiThreadedMvnd("-T1"));
}

@Test
public void validateMultiThreadedThreadsEquals() {
assertTrue(checkisMultiThreadedMvnd("--threads=2"));
}

@Test
public void validateSingleThreadedThreadsEquals1() {
assertFalse(checkisMultiThreadedMvnd("--threads=1"));
}

@Test
public void validateMultiThreadedCompactT1C() {
assertTrue(checkisMultiThreadedMvnd("-T1C"));
}

@Test
public void validateDanglingTFlagIsMultiThreadedMvnd() {
// mvnd is MT by default; lone -T with no value should not flip to ST
assertTrue(checkisMultiThreadedMvnd("-T"));
}

private boolean checkisMultiThreadedMvnd(String params) {
return MavenCommandLineExecutor.isMultiThreadedMvnd(Arrays.asList(params.split(" ")));
}
Expand Down