From af3c37615cca06cd7a95415ed7e75b013450a9ea Mon Sep 17 00:00:00 2001 From: toolsqa Date: Wed, 25 Nov 2015 00:37:02 +0530 Subject: This closes #889, XmlSuite in nested directories results in FIleNotFoundException --- src/main/java/org/testng/TestNG.java | 6 ++++-- src/test/java/test/sanitycheck/CheckSuiteNamesTest.java | 15 +++++++++++++-- 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 (), if any for (XmlSuite s: m_suites) { - for (String suiteFile : s.getSuiteFiles()) { + Path rootPath = Paths.get(s.getFileName()).getParent(); try { - Collection childSuites = getParser(suiteFile).parse(); + Collection 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(); + } } -- cgit v1.2.3