Skip to content

Commit f6975f2

Browse files
sbaranov-parasoftkrmahadevan
authored andcommitted
Set XmlTest indexes after loading test suite from Yaml.
Closes #2857
1 parent f27a7ea commit f6975f2

File tree

5 files changed

+37
-2
lines changed

5 files changed

+37
-2
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
Current
2+
Fixed: GITHUB-2857: XmlTest index is not set for test suites invoked with YAML
23

34
7.7.1
45
Fixed: GITHUB-2854: overloaded assertEquals methods do not work from Groovy (Krishnan Mahadevan)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,10 @@ public int getIndex() {
505505
return m_index;
506506
}
507507

508+
public void setIndex(int index) {
509+
m_index = index;
510+
}
511+
508512
@Override
509513
public int hashCode() {
510514
final int prime = 31;

testng-core/src/main/java/org/testng/internal/Yaml.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,13 @@ public static XmlSuite parse(String filePath, InputStream is, boolean loadClasse
6060
result.setFileName(filePath);
6161

6262
// Adjust XmlTest parents and indices
63+
int testIndex = 0;
6364
for (XmlTest t : result.getTests()) {
65+
t.setIndex(testIndex++);
6466
t.setSuite(result);
65-
int index = 0;
67+
int classIndex = 0;
6668
for (XmlClass c : t.getClasses()) {
67-
c.setIndex(index++);
69+
c.setIndex(classIndex++);
6870
}
6971
}
7072

testng-core/src/test/java/test/yaml/YamlTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.nio.file.Files;
1010
import java.nio.file.Paths;
1111
import java.util.Collection;
12+
import java.util.List;
1213
import java.util.regex.Matcher;
1314
import java.util.regex.Pattern;
1415
import org.testng.Assert;
@@ -18,6 +19,7 @@
1819
import org.testng.internal.YamlParser;
1920
import org.testng.xml.SuiteXmlParser;
2021
import org.testng.xml.XmlSuite;
22+
import org.testng.xml.XmlTest;
2123
import org.testng.xml.internal.Parser;
2224
import test.SimpleBaseTest;
2325

@@ -100,6 +102,18 @@ public void testLoadClassesFlag() throws IOException {
100102
}
101103
}
102104

105+
@Test(description = "GITHUB-2857")
106+
public void testXmlTestIndex() throws IOException {
107+
YamlParser yamlParser = new YamlParser();
108+
String yamlSuiteFile = "src/test/resources/yaml/testXmlTestIndex.yaml";
109+
XmlSuite suite = yamlParser.parse(yamlSuiteFile, new FileInputStream(yamlSuiteFile), false);
110+
List<XmlTest> tests = suite.getTests();
111+
assertThat(tests.size()).isEqualTo(3);
112+
for (int i = 0; i < tests.size(); i++) {
113+
assertThat(tests.get(i).getIndex()).isEqualTo(i);
114+
}
115+
}
116+
103117
private Throwable getRootCause(Throwable throwable) {
104118
return throwable.getCause() != null ? getRootCause(throwable.getCause()) : throwable;
105119
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: SuiteYaml
2+
tests:
3+
- name: TestYaml-1
4+
parameters: { input: yaml_1 }
5+
classes:
6+
- test.TestNGTest
7+
- name: TestYaml-2
8+
parameters: { input: yaml_2 }
9+
classes:
10+
- test.TestNGTest
11+
- name: TestYaml-3
12+
parameters: { input: yaml_3 }
13+
classes:
14+
- test.TestNGTest

0 commit comments

Comments
 (0)