Repository: maven-surefire Updated Branches: refs/heads/master f305e2ab2 -> 4287465b6
SUREFIRE-1096 Fix ClassCastException when configuring forkCount>1 and reuseForks=true together with suiteXmlFiles. For now, surefire falls back to using 1 fork only in that case. Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/4287465b Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/4287465b Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/4287465b Branch: refs/heads/master Commit: 4287465b663091b27364c81141a1152238a4c0b5 Parents: f305e2a Author: Andreas Gudian <agud...@apache.org> Authored: Sun Sep 28 01:54:51 2014 +0200 Committer: Andreas Gudian <agud...@apache.org> Committed: Sun Sep 28 01:54:51 2014 +0200 ---------------------------------------------------------------------- .../surefire/booterclient/ForkStarter.java | 10 ++++++- .../surefire/its/CheckTestNgSuiteXmlIT.java | 12 +++++--- .../src/test/resources/testng-suite-xml/pom.xml | 3 +- .../testng-suite-xml/src/test-data/testng.xml | 30 -------------------- .../testng-suite-xml/src/test-data/testng1.xml | 30 ++++++++++++++++++++ .../testng-suite-xml/src/test-data/testng2.xml | 30 ++++++++++++++++++++ 6 files changed, 79 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4287465b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java index 315c19d..df4325b 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java @@ -64,6 +64,7 @@ import org.apache.maven.surefire.booter.SystemPropertyManager; import org.apache.maven.surefire.providerapi.SurefireProvider; import org.apache.maven.surefire.report.StackTraceWriter; import org.apache.maven.surefire.suite.RunResult; +import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.DefaultScanResult; import static org.apache.maven.surefire.booter.Classpath.join; @@ -185,7 +186,14 @@ public class ForkStarter private boolean isForkOnce() { - return forkConfiguration.isReuseForks() && 1 == forkConfiguration.getForkCount(); + return forkConfiguration.isReuseForks() && ( 1 == forkConfiguration.getForkCount() || hasSuiteXmlFiles() ); + } + + private boolean hasSuiteXmlFiles() + { + TestRequest testSuiteDefinition = providerConfiguration.getTestSuiteDefinition(); + return testSuiteDefinition != null && testSuiteDefinition.getSuiteXmlFiles() != null + && !testSuiteDefinition.getSuiteXmlFiles().isEmpty(); } private RunResult runSuitesForkOnceMultiple( final SurefireProperties effectiveSystemProperties, int forkCount ) http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4287465b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlIT.java ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlIT.java b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlIT.java index d0d30bc..7e0653d 100644 --- a/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlIT.java +++ b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlIT.java @@ -34,19 +34,23 @@ public class CheckTestNgSuiteXmlIT @Test public void suiteXml() { - unpack().executeTest().verifyErrorFree( 1 ); + unpack().executeTest().verifyErrorFree( 2 ); } @Test public void suiteXmlForkModeAlways() { - unpack().forkAlways().executeTest().verifyErrorFree( 1 ); + unpack().forkAlways().executeTest().verifyErrorFree( 2 ); + } + + @Test + public void suiteXmlForkCountTwoReuse() + { + unpack().forkCount( 2 ).reuseForks( true ).executeTest().verifyErrorFree( 2 ); } private SurefireLauncher unpack() { return unpack( "testng-suite-xml" ); } - - } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4287465b/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml b/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml index bbccdde..c43c10b 100644 --- a/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml +++ b/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml @@ -71,7 +71,8 @@ <version>${surefire.version}</version> <configuration> <suiteXmlFiles> - <file>src/test-data/testng.xml</file> + <file>src/test-data/testng1.xml</file> + <file>src/test-data/testng2.xml</file> </suiteXmlFiles> </configuration> </plugin> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4287465b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng.xml ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng.xml b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng.xml deleted file mode 100644 index 1655967..0000000 --- a/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng.xml +++ /dev/null @@ -1,30 +0,0 @@ -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > - -<suite name="Suite 1 Test" verbose="4"> - - <test name="Sample Test"> - <classes> - <class name="testng.suiteXml.TestNGSuiteTest"/> - </classes> - </test> - -</suite> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4287465b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng1.xml ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng1.xml b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng1.xml new file mode 100644 index 0000000..1655967 --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng1.xml @@ -0,0 +1,30 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + --> + +<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > + +<suite name="Suite 1 Test" verbose="4"> + + <test name="Sample Test"> + <classes> + <class name="testng.suiteXml.TestNGSuiteTest"/> + </classes> + </test> + +</suite> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4287465b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng2.xml ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng2.xml b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng2.xml new file mode 100644 index 0000000..3f0749a --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng2.xml @@ -0,0 +1,30 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + --> + +<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > + +<suite name="Suite 2 Test" verbose="4"> + + <test name="Sample Test"> + <classes> + <class name="testng.suiteXml.TestNGSuiteTest"/> + </classes> + </test> + +</suite> \ No newline at end of file