Skip to content

Commit c5b8bb1

Browse files
author
enztngh
committed
GITHUB-3196: support to execlude somes 'test' in option of command line
1 parent 568bfb6 commit c5b8bb1

File tree

5 files changed

+45
-5
lines changed

5 files changed

+45
-5
lines changed

CHANGES.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Fixed: GITHUB-3122: Update JCommander to 1.83 (Antoine Dessaigne)
66
Fixed: GITHUB-3135: assertEquals on arrays - Failure message is missing information about the array index when an array element is unexpectedly null or non-null (Albert Choi)
77
Fixed: GITHUB-3140: assertEqualsDeep on Sets - Deep comparison was using the wrong expected value
88
Fixed: GITHUB-3189: Incorrect number of ignored tests displayed in the XML results
9-
Fixed: GITHUB-3196: support to execlude somes 'test' in option of command line
9+
Fixed: GITHUB-3196: support to execlude somes tests in option of command line
1010

1111
7.10.2
1212
Fixed: GITHUB-3117: ListenerComparator doesn't work (Krishnan Mahadevan)

testng-core-api/src/main/java/org/testng/xml/XmlTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,15 @@ public XmlGroups getXmlGroups() {
625625
* @return <code>true</code> if the current test's name matches with any of the given names.
626626
*/
627627
public boolean nameMatchesAny(List<String> names) {
628-
return names.stream().anyMatch(regex -> Pattern.matches(regex, getName()));
628+
return names.contains(getName())
629+
|| names.stream()
630+
.anyMatch(
631+
regex -> {
632+
if (regex.startsWith("/") && regex.endsWith("/")) {
633+
String trimmedRegex = regex.substring(1, regex.length() - 1);
634+
return Pattern.matches(trimmedRegex, getName());
635+
}
636+
return false;
637+
});
629638
}
630639
}

testng-core/src/main/java/org/testng/xml/internal/TestNamesMatcher.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,17 @@ public List<String> getMissedTestNames() {
9191
List<String> missedTestNames = Lists.newArrayList();
9292
missedTestNames.addAll(testNames);
9393
missedTestNames.removeIf(
94-
regex -> matchedTestNames.stream().anyMatch(testName -> Pattern.matches(regex, testName)));
94+
regex ->
95+
matchedTestNames.contains(regex)
96+
|| matchedTestNames.stream()
97+
.anyMatch(
98+
name -> {
99+
if (regex.startsWith("/") && regex.endsWith("/")) {
100+
String trimmedRegex = regex.substring(1, regex.length() - 1);
101+
return Pattern.matches(trimmedRegex, name);
102+
}
103+
return false;
104+
}));
95105
return missedTestNames;
96106
}
97107

testng-core/src/test/java/org/testng/xml/XmlTestTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ public void testNameMatchesAny() {
2424
public void testNameMatchesAnyWithRegex() {
2525
XmlSuite xmlSuite = createDummySuiteWithTestNamesAs("test1");
2626
XmlTest xmlTest = xmlSuite.getTests().get(0);
27-
assertThat(xmlTest.nameMatchesAny(Collections.singletonList("^(test1$).*"))).isTrue();
28-
assertThat(xmlTest.nameMatchesAny(Collections.singletonList("^(?!test1$).*,"))).isFalse();
27+
assertThat(xmlTest.nameMatchesAny(Collections.singletonList("/^(test1$).*/"))).isTrue();
28+
assertThat(xmlTest.nameMatchesAny(Collections.singletonList("/^(?!test1$).*/"))).isFalse();
2929
}
3030

3131
@Test(dataProvider = "dp", description = "GITHUB-1716")

testng-core/src/test/java/test/methodselectors/CommandLineTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,27 @@ public void testOverrideExcludedMethodsSuiteExclusions() {
170170
verifyTests("Failed", failed, tla.getFailedTests());
171171
}
172172

173+
@Test(description = "GITHUB-2407")
174+
public void testSpecificTestNamesWithRegexCommandLineExclusions() {
175+
String[] args =
176+
new String[] {
177+
"src/test/resources/testnames/main-suite.xml",
178+
"-log",
179+
"0",
180+
"-d",
181+
OutputDirectoryPatch.getOutputDirectory(),
182+
"-testnames",
183+
"/^testGroup1.*/"
184+
};
185+
186+
TestNG.privateMain(args, tla);
187+
188+
String[] passed = {"sampleOutputTest1"};
189+
String[] failed = {};
190+
verifyTests("Passed", passed, tla.getPassedTests());
191+
verifyTests("Failed", failed, tla.getFailedTests());
192+
}
193+
173194
private void verifyTests(String title, String[] expected, List<ITestResult> found) {
174195

175196
Assertions.assertThat(found.stream().map(ITestResult::getName).toArray(String[]::new))

0 commit comments

Comments
 (0)