diff --git a/CHANGES.txt b/CHANGES.txt index 1a05d13e87..d5a5a3732d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ Current +Fixed: GITHUB-2844: Deprecate support for running Spock Tests (Krishnan Mahadevan) Fixed: GITHUB-893: TestNG should provide an Api which allow to find all dependent of a specific test (Krishnan Mahadevan) New: Added .yml file extension for yaml suite files, previously only .yaml was allowed for yaml (Steven Jubb) Fixed: GITHUB-141: regular expression in "dependsOnMethods" does not work (Krishnan Mahadevan) diff --git a/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts b/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts index 95fefc2fab..92c5360f13 100644 --- a/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts +++ b/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts @@ -19,7 +19,9 @@ tasks.withType().configureEach { // But let's not fail builds for that reason if (JavaVersion.current() != JavaVersion.VERSION_17) { compilerArgs.add("-Xlint:deprecation") - compilerArgs.add("-Werror") + //If we have deprecation warnings, the build fails + //which should not happen + //compilerArgs.add("-Werror") } } } diff --git a/testng-core/src/main/java/org/testng/junit/JUnit4SpockMethod.java b/testng-core/src/main/java/org/testng/junit/JUnit4SpockMethod.java index 07139307b3..ffe80d736f 100644 --- a/testng-core/src/main/java/org/testng/junit/JUnit4SpockMethod.java +++ b/testng-core/src/main/java/org/testng/junit/JUnit4SpockMethod.java @@ -4,6 +4,8 @@ import org.junit.runner.Description; import org.testng.internal.ConstructorOrMethod; +/** @deprecated - Support for Spock1.x series is being deprecated as of TestNG 7.6.2 */ +@Deprecated public class JUnit4SpockMethod extends ConstructorOrMethod { private static final Class SPOCK_SPEC_CLASS = getSpockSpecClass(); diff --git a/testng-core/src/main/java/org/testng/junit/JUnit4TestMethod.java b/testng-core/src/main/java/org/testng/junit/JUnit4TestMethod.java index 31afaf8e29..cbdb0ef957 100644 --- a/testng-core/src/main/java/org/testng/junit/JUnit4TestMethod.java +++ b/testng-core/src/main/java/org/testng/junit/JUnit4TestMethod.java @@ -1,12 +1,16 @@ package org.testng.junit; +import java.util.concurrent.atomic.AtomicBoolean; import org.junit.runner.Description; import org.testng.ITestObjectFactory; import org.testng.internal.ConstructorOrMethod; import org.testng.internal.Utils; +import org.testng.log4testng.Logger; public class JUnit4TestMethod extends JUnitTestMethod { + private static final AtomicBoolean warnOnce = new AtomicBoolean(false); + public JUnit4TestMethod( ITestObjectFactory objectFactory, JUnitTestClass owner, Description desc) { super(objectFactory, owner, desc.getMethodName(), getMethod(owner.getRealClass(), desc), desc); @@ -15,6 +19,15 @@ public JUnit4TestMethod( private static ConstructorOrMethod getMethod(Class c, Description desc) { String method = desc.getMethodName(); if (JUnit4SpockMethod.isSpockClass(c)) { + if (warnOnce.compareAndSet(false, true)) { + String msg = + "Support for running Spock 1.x series is being deprecated and will " + + "be removed in the upcoming versions of TestNG. Spock 2.x based tests use " + + "the JUnit5 engine for running them. " + + "To run both TestNG and Spock2.x tests using JUnit5 refer to " + + "https://github.com/junit-team/testng-engine"; + Logger.getLogger(JUnit4TestMethod.class).warn(msg); + } return new JUnit4SpockMethod(desc); } if (method == null) { diff --git a/testng-core/src/test/groovy/test/groovy/GroovyTest.groovy b/testng-core/src/test/groovy/test/groovy/GroovyTest.groovy index 7462bf55a2..9f8b166b81 100644 --- a/testng-core/src/test/groovy/test/groovy/GroovyTest.groovy +++ b/testng-core/src/test/groovy/test/groovy/GroovyTest.groovy @@ -39,27 +39,6 @@ class GroovyTest extends SimpleBaseTest { assert adapter.passedTests.size() == 1 } - @Test - void spockSampleShouldWork() { - def tng = create(SpockSample) - tng.setJUnit(true) - def adapter = new TestListenerAdapter() - tng.addListener((ITestNGListener)adapter) - tng.run() - - assert adapter.failedTests.isEmpty() - assert adapter.skippedTests.isEmpty() - assert adapter.passedTests.size() == 1 - } - - @Test - void reporterWithSpockSampleShouldWork() { - def tng = create(SpockSample) - tng.setJUnit(true) - tng.addListener((ITestNGListener) new JUnitXMLReporter()) - tng.run() - } - @Test(description = "GITHUB-2360") void groovyInternalMethodsAreSkipped() { def tng = create Issue2360Sample diff --git a/testng-core/src/test/groovy/test/groovy/SpockSample.groovy b/testng-core/src/test/groovy/test/groovy/SpockSample.groovy deleted file mode 100644 index d6d3709f22..0000000000 --- a/testng-core/src/test/groovy/test/groovy/SpockSample.groovy +++ /dev/null @@ -1,17 +0,0 @@ -package test.groovy - -import spock.lang.Specification - -class SpockSample extends Specification { - - def "adding an element leads to size increase"() { - setup: "a new stack instance is created" - def stack = new Stack() - - when: - stack.push 42 - - then: - stack.size() == 1 - } -} diff --git a/testng-core/testng-core-build.gradle.kts b/testng-core/testng-core-build.gradle.kts index 6924f99e15..600042a2ac 100644 --- a/testng-core/testng-core-build.gradle.kts +++ b/testng-core/testng-core-build.gradle.kts @@ -41,7 +41,6 @@ dependencies { testImplementation("org.codehaus.groovy:groovy-all:_") { exclude("org.testng", "testng") } - testImplementation("org.spockframework:spock-core:_") testImplementation("org.apache-extras.beanshell:bsh:_") testImplementation("org.mockito:mockito-core:_") testImplementation("org.jboss.shrinkwrap:shrinkwrap-api:_") diff --git a/versions.properties b/versions.properties index dd090a106a..641e2929af 100644 --- a/versions.properties +++ b/versions.properties @@ -104,12 +104,7 @@ version.org.assertj..assertj-core=3.22.0 ## # available=3.23.0 ## # available=3.23.1 -## DONOT alter the version of groovy here because we need the compatible -## version with what spock needs -version.org.codehaus.groovy..groovy-all=2.5.4 -## # available=3.0.11 -## # available=3.0.12 -## # available=3.0.13 +version.org.codehaus.groovy..groovy-all=3.0.13 version.org.gridkit.jvmtool..heaplib=0.2 @@ -129,31 +124,6 @@ version.org.ops4j.pax.exam..pax-exam-testng=4.13.5 version.org.ops4j.pax.url..pax-url-aether=2.6.12 -## DONOT upgrade the version to the 2.x series because spock 2.x series -## starts expecting adherance the JUnit5 engine and we are NOT -## planning to support running JUnit5 tests in TestNG and so we don't have -## JUnit5 compliant runner -version.org.spockframework..spock-core=1.3-groovy-2.5 -## # available=2.1-M1-groovy-2.5 -## # available=2.1-M1-groovy-3.0 -## # available=2.1-M2-groovy-2.5 -## # available=2.1-M2-groovy-3.0 -## # available=2.2-groovy-2.5 -## # available=2.2-groovy-3.0 -## # available=2.2-groovy-4.0 -## # available=2.2-M1-groovy-2.5 -## # available=2.2-M1-groovy-3.0 -## # available=2.2-M1-groovy-4.0 -## # available=2.2-M2-groovy-2.5 -## # available=2.2-M2-groovy-3.0 -## # available=2.2-M2-groovy-4.0 -## # available=2.2-M3-groovy-2.5 -## # available=2.2-M3-groovy-3.0 -## # available=2.2-M3-groovy-4.0 -## # available=2.3-groovy-2.5 -## # available=2.3-groovy-3.0 -## # available=2.3-groovy-4.0 - version.org.webjars..jquery=3.6.1 version.org.xmlunit..xmlunit-assertj=2.9.0