Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #2469 #2470

Merged
merged 5 commits into from Feb 3, 2021
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.txt
@@ -1,5 +1,6 @@
Current
Fixed: GITHUB-2467: XmlTest does not copy the xmlClasses during clone (C.V.Aditya)
Fixed: GITHUB-2469: Parameters added in XmlTest during AlterSuiteListener not available in SuiteListener (C.V.Aditya)
Fixed: GITHUB-2296: Fix for assertEquals not working for sets as order is not guaranteed. (Prashant Maroti)
Fixed: GITHUB-2465: Fix bux where Strings.join returns empty String
Fixed: GITHUB-1632: throwing SkipException sets iTestResult status to Failure instead of Skip (Julien Herr & Krishnan Mahadevan)
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/org/testng/xml/XmlTest.java
Expand Up @@ -426,7 +426,9 @@ public Object clone() {
result.setJUnit(isJUnit());
result.setParallel(getParallel());
result.setVerbose(getVerbose());
result.setParameters(getLocalParameters());
Map<String, String> localParameters = new HashMap<>();
localParameters.putAll(getLocalParameters());
result.setParameters(localParameters);
result.setXmlPackages(getXmlPackages());
result.setTimeOut(getTimeOut());
result.setXmlClasses(getXmlClasses());
Expand Down
86 changes: 75 additions & 11 deletions src/test/java/test/listeners/AlterSuiteListenerTest.java
@@ -1,13 +1,13 @@
package test.listeners;

import org.testng.Assert;
import org.testng.IAlterSuiteListener;
import org.testng.TestNG;
import org.testng.*;
import org.testng.annotations.Test;
import org.testng.internal.collections.Pair;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
import test.SimpleBaseTest;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

Expand All @@ -17,35 +17,66 @@ public class AlterSuiteListenerTest extends SimpleBaseTest {

@Test
public void executionListenerWithXml() {
XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, AlterSuiteNameListener.class.getName());
XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, AlterSuiteNameListener.class.getName()).second();
Assert.assertEquals(suite.getName(), AlterSuiteNameListener.class.getSimpleName());
}

@Test
public void executionListenerWithoutListener() {
XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, null/*Donot add the listener*/);
XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class).second();
Assert.assertEquals(suite.getName(), ALTER_SUITE_LISTENER);
}

@Test
public void executionListenerWithXml2() {
XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, AlterXmlTestsInSuiteListener.class.getName());
XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, AlterXmlTestsInSuiteListener.class.getName()).second();
Assert.assertEquals(suite.getTests().size(), 2);
}

@Test(description = "GITHUB-2469")
public void executionListenerWithXml3() {
Pair<TestNG, XmlSuite> retObjects = runTest(AlterSuiteListener1SampleTest.class,
AlterXmlTestWithParameterInSuiteListener.class.getName(), AlteredXmlSuiteReadListener.class.getName());
TestNG tng = retObjects.first();
XmlSuite suite = retObjects.second();
Assert.assertEquals(suite.getTests().size(), 2);
List<ISuiteListener> listeners = tng.getSuiteListeners();
Assert.assertNotNull(listeners);
if(listeners.size() > 0){
aditya-qapitol marked this conversation as resolved.
Show resolved Hide resolved
for (ISuiteListener iSuiteListener :
listeners) {
if (iSuiteListener instanceof AlteredXmlSuiteReadListener) {
AlteredXmlSuiteReadListener alteredXmlSuiteReadListener = (AlteredXmlSuiteReadListener) iSuiteListener;
XmlSuite xmlSuite = alteredXmlSuiteReadListener.currentSuiteOnStart.getXmlSuite();
List<XmlTest> tests = xmlSuite.getTests();
int i = 1;
for (XmlTest xmlTest:
tests) {
Assert.assertEquals(xmlTest.getParameter("param"), String.valueOf(i));
i++;
}
}
}
} else {
Assert.assertTrue(false, "ISuiteListeners are Empty");
}
}

private XmlSuite runTest(Class<?> listenerClass, String listenerName) {
private Pair<TestNG, XmlSuite> runTest(Class<?> listenerClass, String... listenerNames) {
XmlSuite s = createXmlSuite(ALTER_SUITE_LISTENER);
createXmlTest(s, "Test", listenerClass.getName());
boolean addListener = (listenerName != null);

if (addListener) {
s.addListener(listenerName);
if (listenerNames.length > 0) {
aditya-qapitol marked this conversation as resolved.
Show resolved Hide resolved
for (String listenerName:
listenerNames) {
s.addListener(listenerName);
}
}
TestNG tng = create();
tng.setXmlSuites(Arrays.asList(s));
tng.run();
return s;
Pair<TestNG, XmlSuite> returnObj = new Pair<>(tng, s);
return returnObj;
}

public static class AlterSuiteListener1SampleTest {
Expand Down Expand Up @@ -78,4 +109,37 @@ public void alter(List<XmlSuite> suites) {
}
}

public static class AlterXmlTestWithParameterInSuiteListener implements IAlterSuiteListener {

@Override
public void alter(List<XmlSuite> suites) {
XmlSuite suite = suites.get(0);
List<XmlTest> tests = suite.getTests();
XmlTest test = tests.get(0);

List<XmlTest> newXmlTests = new ArrayList<>();
XmlTest newXmlTest = (XmlTest) test.clone();
newXmlTest.setName("name_1");
newXmlTest.addParameter("param", "1");
newXmlTests.add(newXmlTest);

newXmlTest = (XmlTest) test.clone();
newXmlTest.setName("name_2");
newXmlTest.addParameter("param", "2");
newXmlTests.add(newXmlTest);

suite.setTests(newXmlTests);
}
}

public static class AlteredXmlSuiteReadListener implements ISuiteListener {

public ISuite currentSuiteOnStart;

@Override
public void onStart(ISuite suite) {
currentSuiteOnStart = suite;
}
}

}
6 changes: 6 additions & 0 deletions src/test/resources/testng.xml
Expand Up @@ -995,5 +995,11 @@
<class name="test.timeout.github2440.TimeoutWithNoExecutorTest"/>
</classes>
</test>

<test name="GITHUB-2469">
<classes>
<class name="test.listeners.AlterSuiteListenerTest"/>
</classes>
</test>
</suite>