From 586b77743a920b69697f586b092f32b556643433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Thu, 26 Mar 2026 21:43:33 +0100 Subject: [PATCH 1/6] Test that `c` (lower case) in `Nc` is not recognized as hexdigit --- .../src/test/java/org/apache/maven/cli/MavenCliTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java index e5fd93acb078..ddd376769fbf 100644 --- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java +++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java @@ -82,6 +82,10 @@ public void testCalculateDegreeOfConcurrency() { assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("2C2")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("CXXX")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("XXXC")); + assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("1c")); + assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency(" 1c")); + assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("1c ")); + assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency(" 1c ")); int cpus = Runtime.getRuntime().availableProcessors(); assertEquals((int) (cpus * 2.2), cli.calculateDegreeOfConcurrency("2.2C")); From 8d254d30386709523ff94ae68a4a2ac12233aa6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Thu, 26 Mar 2026 21:43:34 +0100 Subject: [PATCH 2/6] Test parsing threads from ` 1C` input --- .../src/test/java/org/apache/maven/cli/MavenCliTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java index ddd376769fbf..758394160546 100644 --- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java +++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java @@ -90,6 +90,7 @@ public void testCalculateDegreeOfConcurrency() { int cpus = Runtime.getRuntime().availableProcessors(); assertEquals((int) (cpus * 2.2), cli.calculateDegreeOfConcurrency("2.2C")); assertEquals(1, cli.calculateDegreeOfConcurrency("0.0001C")); + assertEquals(1 * cpus, cli.calculateDegreeOfConcurrency(" 1C")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("-2.2C")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("0C")); } From b7f110cddefb083bf40a6ad1fff5b1fa6cd1aa5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Thu, 26 Mar 2026 21:43:34 +0100 Subject: [PATCH 3/6] Test parsing threads from ` 1C ` input --- .../src/test/java/org/apache/maven/cli/MavenCliTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java index 758394160546..3374b59edaf8 100644 --- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java +++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java @@ -91,6 +91,7 @@ public void testCalculateDegreeOfConcurrency() { assertEquals((int) (cpus * 2.2), cli.calculateDegreeOfConcurrency("2.2C")); assertEquals(1, cli.calculateDegreeOfConcurrency("0.0001C")); assertEquals(1 * cpus, cli.calculateDegreeOfConcurrency(" 1C")); + assertEquals(1 * cpus, cli.calculateDegreeOfConcurrency(" 1C ")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("-2.2C")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("0C")); } From f695dd37d2c34a97d5b98aa0e832b806eebdbb73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Thu, 26 Mar 2026 21:43:35 +0100 Subject: [PATCH 4/6] Trim `threadConfiguration` to accept input like ` 1C ` --- .../src/main/java/org/apache/maven/cli/MavenCli.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java index e0ed45c3a424..7d1332d59c65 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java @@ -1453,7 +1453,8 @@ private MavenExecutionRequest populateRequest(CliRequest cliRequest, MavenExecut return request; } - int calculateDegreeOfConcurrency(String threadConfiguration) { + int calculateDegreeOfConcurrency(String originalThreadConfiguration) { + String threadConfiguration = originalThreadConfiguration.trim(); if (threadConfiguration.endsWith("C")) { threadConfiguration = threadConfiguration.substring(0, threadConfiguration.length() - 1); @@ -1476,17 +1477,17 @@ int calculateDegreeOfConcurrency(String threadConfiguration) { } } else { try { - int threads = Integer.parseInt(threadConfiguration); + int threads = Integer.parseInt(originalThreadConfiguration); if (threads <= 0) { throw new IllegalArgumentException( - "Invalid threads value: '" + threadConfiguration + "'. Value must be positive."); + "Invalid threads value: '" + originalThreadConfiguration + "'. Value must be positive."); } return threads; } catch (NumberFormatException e) { throw new IllegalArgumentException( - "Invalid threads value: '" + threadConfiguration + "'. Supported are integer values."); + "Invalid threads value: '" + originalThreadConfiguration + "'. Supported are integer values."); } } } From c1d50f6f4f78bec025f70220f1565114f7f9c2fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Thu, 26 Mar 2026 21:43:36 +0100 Subject: [PATCH 5/6] Test parsing threads from ` 1` and ` 1 ` input --- .../src/test/java/org/apache/maven/cli/MavenCliTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java index 3374b59edaf8..108667ed073f 100644 --- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java +++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java @@ -92,6 +92,8 @@ public void testCalculateDegreeOfConcurrency() { assertEquals(1, cli.calculateDegreeOfConcurrency("0.0001C")); assertEquals(1 * cpus, cli.calculateDegreeOfConcurrency(" 1C")); assertEquals(1 * cpus, cli.calculateDegreeOfConcurrency(" 1C ")); + assertEquals(1, cli.calculateDegreeOfConcurrency(" 1")); + assertEquals(1, cli.calculateDegreeOfConcurrency(" 1 ")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("-2.2C")); assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("0C")); } From f89f3ea48d5d3dfca977bed320591464a8a0a7d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Thu, 26 Mar 2026 21:43:37 +0100 Subject: [PATCH 6/6] Use trimmed input also for whole numbers --- .../src/main/java/org/apache/maven/cli/MavenCli.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java index 7d1332d59c65..5a8bb5523dad 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java @@ -1477,17 +1477,17 @@ int calculateDegreeOfConcurrency(String originalThreadConfiguration) { } } else { try { - int threads = Integer.parseInt(originalThreadConfiguration); + int threads = Integer.parseInt(threadConfiguration); if (threads <= 0) { throw new IllegalArgumentException( - "Invalid threads value: '" + originalThreadConfiguration + "'. Value must be positive."); + "Invalid threads value: '" + threadConfiguration + "'. Value must be positive."); } return threads; } catch (NumberFormatException e) { throw new IllegalArgumentException( - "Invalid threads value: '" + originalThreadConfiguration + "'. Supported are integer values."); + "Invalid threads value: '" + threadConfiguration + "'. Supported are integer values."); } } }