aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoolsqa <toolsqa@gmail.com>2015-11-25 00:37:02 +0530
committertoolsqa <toolsqa@gmail.com>2015-11-25 00:37:02 +0530
commitaf3c37615cca06cd7a95415ed7e75b013450a9ea (patch)
treee3db0e347b2337322116ec4f81ec027dfa5396e9
parent4444b283f19d043be0c540b8577acadc20b839a7 (diff)
downloadtestng-af3c37615cca06cd7a95415ed7e75b013450a9ea.tar.gz
This closes #889, XmlSuite in nested directories results in FIleNotFoundException
-rw-r--r--src/main/java/org/testng/TestNG.java6
-rw-r--r--src/test/java/test/sanitycheck/CheckSuiteNamesTest.java15
2 files changed, 17 insertions, 4 deletions
diff --git a/src/main/java/org/testng/TestNG.java b/src/main/java/org/testng/TestNG.java
index 1572bd57..d40c9803 100644
--- a/src/main/java/org/testng/TestNG.java
+++ b/src/main/java/org/testng/TestNG.java
@@ -5,6 +5,8 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -275,10 +277,10 @@ public class TestNG {
if (m_suites.size() > 0) {
//to parse the suite files (<suite-file>), if any
for (XmlSuite s: m_suites) {
-
for (String suiteFile : s.getSuiteFiles()) {
+ Path rootPath = Paths.get(s.getFileName()).getParent();
try {
- Collection<XmlSuite> childSuites = getParser(suiteFile).parse();
+ Collection<XmlSuite> childSuites = getParser(rootPath.resolve(suiteFile).normalize().toString()).parse();
for (XmlSuite cSuite : childSuites){
cSuite.setParentSuite(s);
s.getChildSuites().add(cSuite);
diff --git a/src/test/java/test/sanitycheck/CheckSuiteNamesTest.java b/src/test/java/test/sanitycheck/CheckSuiteNamesTest.java
index 3a9fe354..83c589d7 100644
--- a/src/test/java/test/sanitycheck/CheckSuiteNamesTest.java
+++ b/src/test/java/test/sanitycheck/CheckSuiteNamesTest.java
@@ -3,14 +3,16 @@ package test.sanitycheck;
import org.testng.Assert;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
-import org.testng.TestNGException;
import org.testng.annotations.Test;
+import org.testng.xml.Parser;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
+import org.xml.sax.SAXException;
import test.SimpleBaseTest;
-
+import java.io.IOException;
import java.util.Arrays;
+import javax.xml.parsers.ParserConfigurationException;
public class CheckSuiteNamesTest extends SimpleBaseTest {
@@ -70,4 +72,13 @@ public class CheckSuiteNamesTest extends SimpleBaseTest {
Assert.assertEquals(xmlSuite1.getName(), "SanityCheckSuite");
Assert.assertEquals(xmlSuite2.getName(), "SanityCheckSuite (0)");
}
+
+ @Test
+ public void checkXmlSuiteAddition() throws ParserConfigurationException, SAXException, IOException {
+ TestNG tng = create();
+ String testngXmlPath = getPathToResource("sanitycheck/test-s-b.xml");
+ Parser parser = new Parser(testngXmlPath);
+ tng.setXmlSuites(parser.parseToList());
+ tng.initializeSuitesAndJarFile();
+ }
}