diff --git a/build-logic/code-quality/src/main/kotlin/testng.errorprone.gradle.kts b/build-logic/code-quality/src/main/kotlin/testng.errorprone.gradle.kts index 6670bde6e8..3394f20655 100644 --- a/build-logic/code-quality/src/main/kotlin/testng.errorprone.gradle.kts +++ b/build-logic/code-quality/src/main/kotlin/testng.errorprone.gradle.kts @@ -12,8 +12,6 @@ dependencies { } tasks.withType().configureEach { - val testCompile = name.contains("Test") - options.errorprone { disableWarningsInGeneratedCode.set(true) @@ -24,7 +22,7 @@ tasks.withType().configureEach { // its jar is on the processor path, even for a task that disables the check below, and // NullAway refuses to start unless one of OnlyNullMarked or AnnotatedPackages is set. // Moving them into an else branch fails every test compile. - check("NullAway", CheckSeverity.ERROR) + error("NullAway") option("NullAway:OnlyNullMarked", true) // Without JSpecifyMode, NullAway reads declarations only and never looks inside a generic @@ -33,22 +31,49 @@ tasks.withType().configureEach { // what makes @NullMarked mean what JSpecify says it means rather than roughly half of it. option("NullAway:JSpecifyMode", true) - if (testCompile) { - // SelfAssertion only fires on TestNG's own sample/fixture classes, where trivial - // assertions such as assertThat("abc").isEqualTo("abc") exist solely to give the - // runner a passing method. Production code keeps the check enabled. - disable("SelfAssertion") - - // NullAway stays on here: @NullMarked is per package, not per source set, so twelve - // test packages are already marked by the main package-info.class on their compile - // classpath. - // - // HandleTestAssertionLibraries teaches NullAway that assertThat(x).isNotNull() refines - // x. It is keyed on the task name, so testng-test-kit -- test code that lives in a main - // source set -- does not get it, even though its org.testng.xml half is marked and - // checked today. That is inert only because the AssertJ use in that module sits in the - // unmarked test package, so nothing there refines a nullable value yet. - option("NullAway:HandleTestAssertionLibraries", true) - } + // Checks measured at zero unsuppressed sites, promoted from warning so the next + // violation stops the build instead of joining an output nobody reads. The sites that + // remain carry a @SuppressWarnings saying why. Finalize is here on new violations alone -- + // both of its sites are suppressed, because the finalizers are what the leak test watches. + // + // Measure before adding one: javac caps at 100 warnings per compile task and several + // tasks here are past that, so an ordinary build undercounts. Nothing raises the cap, so + // count from a throwaway init script that adds -Xmaxwarns rather than from a plain build. + // + // Promoting also takes a check out of disableWarningsInGeneratedCode above: Error Prone + // only honours that exemption while the check is below ERROR. Nothing here generates Java + // today, so the list costs nothing; a module that adds a processor pays for it. + error( + "BadImport", + "BooleanLiteral", + "Finalize", + "InconsistentCapitalization", + "MissingOverride", + "NotJavadoc", + "StringCaseLocaleUsage", + "TypeParameterUnusedInFormals", + "UnnecessaryParentheses", + "UnusedVariable", + ) + + // Which compiles carry test code. The Error Prone plugin derives compilingTestOnlyCode + // from the *source set* name and lets a module override it, so a module whose main source + // set holds test fixtures can declare that rather than be classified by whether its task + // name happens to contain "Test". testng-test-kit is exactly that module. + // + // orElse: a JavaCompile task that belongs to no source set gets no convention, and feeding + // an absent provider to the options below would make them unresolvable. + val testCode = compilingTestOnlyCode.orElse(false) + + // SelfAssertion only fires on TestNG's own sample/fixture classes, where trivial + // assertions such as assertThat("abc").isEqualTo("abc") exist solely to give the runner a + // passing method. Production code keeps the check enabled. + check("SelfAssertion", testCode.map { if (it) CheckSeverity.OFF else CheckSeverity.DEFAULT }) + + // NullAway stays on for test code: @NullMarked is per package, not per source set, so the + // test half of every marked main package is already marked by the package-info.class on + // its compile classpath. HandleTestAssertionLibraries is what teaches NullAway that + // assertThat(x).isNotNull() refines x. + option("NullAway:HandleTestAssertionLibraries", testCode.map { it.toString() }) } } diff --git a/testng-core-api/src/main/java/org/testng/ITestObjectFactory.java b/testng-core-api/src/main/java/org/testng/ITestObjectFactory.java index 97f7d4f46d..1facca7ecd 100644 --- a/testng-core-api/src/main/java/org/testng/ITestObjectFactory.java +++ b/testng-core-api/src/main/java/org/testng/ITestObjectFactory.java @@ -11,6 +11,12 @@ default T newInstance(Class cls, Object... parameters) { return InstanceCreator.newInstance(cls, parameters); } + // The sibling overloads take Class or Constructor, so T is inferred from the argument. + // This one identifies the class by name, so nothing in the formals carries T and the caller + // picks it by assignment -- newInstance("com.acme.Bar") will happily fill a Foo variable and + // fail with a ClassCastException at the call site. That is what the check flags, and it is + // published API, so it is suppressed rather than obeyed. + @SuppressWarnings("TypeParameterUnusedInFormals") default T newInstance(String clsName, Object... parameters) { return InstanceCreator.newInstance(clsName, parameters); } diff --git a/testng-core-api/src/main/java/org/testng/annotations/ITestAnnotation.java b/testng-core-api/src/main/java/org/testng/annotations/ITestAnnotation.java index bfbae6b38d..8734c1b23a 100644 --- a/testng-core-api/src/main/java/org/testng/annotations/ITestAnnotation.java +++ b/testng-core-api/src/main/java/org/testng/annotations/ITestAnnotation.java @@ -65,21 +65,27 @@ public interface ITestAnnotation extends ITestOrConfiguration, IDataProvidable { void setSingleThreaded(boolean f); + @Override String getDataProvider(); + @Override void setDataProvider(String v); /** * @return The class holding the data provider, or {@code null} when neither the method nor * anything it inherits from names one. */ + @Override @Nullable Class getDataProviderClass(); + @Override void setDataProviderClass(@Nullable Class v); + @Override String getDataProviderDynamicClass(); + @Override void setDataProviderDynamicClass(String v); void setRetryAnalyzer(Class c); diff --git a/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java b/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java index afbcb0f61d..70df6df9c5 100644 --- a/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java +++ b/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java @@ -10,6 +10,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.Spliterator; import java.util.Spliterators; @@ -108,8 +109,8 @@ public static String[] findClassesInPackage( for (int i = 0; i < classpathFragments.length; i++) { String path; - if (classpathFragments[i].toLowerCase().endsWith(".jar") - || classpathFragments[i].toLowerCase().endsWith(".zip")) { + String fragment = classpathFragments[i].toLowerCase(Locale.ROOT); + if (fragment.endsWith(".jar") || fragment.endsWith(".zip")) { path = classpathFragments[i] + "!/"; } else { if (classpathFragments[i].endsWith(File.separator)) { diff --git a/testng-core-api/src/main/java/org/testng/internal/objects/InstanceCreator.java b/testng-core-api/src/main/java/org/testng/internal/objects/InstanceCreator.java index 53fbe85d38..e6c97459cf 100644 --- a/testng-core-api/src/main/java/org/testng/internal/objects/InstanceCreator.java +++ b/testng-core-api/src/main/java/org/testng/internal/objects/InstanceCreator.java @@ -19,6 +19,10 @@ private InstanceCreator() { // Hide Constructor } + // Named by String rather than by Class, so T appears only in the return type and the cast + // below is unchecked -- which is the check's complaint. It implements the ITestObjectFactory + // overload of the same shape, so the signature is not ours to change. + @SuppressWarnings("TypeParameterUnusedInFormals") public static T newInstance(String className, Object... parameters) { Class clazz = ClassHelper.forName(className); Objects.requireNonNull(clazz, "Could not find a valid class"); diff --git a/testng-core-api/src/main/java/org/testng/internal/protocols/Processor.java b/testng-core-api/src/main/java/org/testng/internal/protocols/Processor.java index 1e2eaa0e4a..a9174428a8 100644 --- a/testng-core-api/src/main/java/org/testng/internal/protocols/Processor.java +++ b/testng-core-api/src/main/java/org/testng/internal/protocols/Processor.java @@ -4,6 +4,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.regex.Pattern; import org.testng.internal.Utils; @@ -13,7 +14,7 @@ public abstract class Processor { public static Processor newInstance(String protocol) { Processor instance; - switch (protocol.toLowerCase()) { + switch (protocol.toLowerCase(Locale.ROOT)) { case "file": instance = new FileProcessor(); break; @@ -47,8 +48,8 @@ protected static List findClassesInDirPackage( dir.listFiles( file -> (recursive && file.isDirectory()) - || (file.getName().endsWith(".class")) - || (file.getName().endsWith(".groovy"))); + || file.getName().endsWith(".class") + || file.getName().endsWith(".groovy")); Utils.log(CLS_NAME, 4, "Looking for test classes in the directory: " + dir); if (dirfiles == null) { diff --git a/testng-core/src/main/java/org/testng/JarFileUtils.java b/testng-core/src/main/java/org/testng/JarFileUtils.java index d6d5eebbc4..6d1fe0d198 100644 --- a/testng-core/src/main/java/org/testng/JarFileUtils.java +++ b/testng-core/src/main/java/org/testng/JarFileUtils.java @@ -9,6 +9,7 @@ import java.util.Enumeration; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -94,7 +95,7 @@ private boolean testngXmlExistsInJar(File jarFile, List classes) throws while (entries.hasMoreElements()) { JarEntry je = entries.nextElement(); String jeName = je.getName(); - if (Parser.canParse(jeName.toLowerCase())) { + if (Parser.canParse(jeName.toLowerCase(Locale.ROOT))) { InputStream inputStream = jf.getInputStream(je); File copyFile = new File(file, jeName); if (!copyFile.toPath().normalize().startsWith(file.toPath().normalize())) { diff --git a/testng-core/src/main/java/org/testng/SuiteRunner.java b/testng-core/src/main/java/org/testng/SuiteRunner.java index 6c966572f3..131d45ac8c 100644 --- a/testng-core/src/main/java/org/testng/SuiteRunner.java +++ b/testng-core/src/main/java/org/testng/SuiteRunner.java @@ -12,7 +12,6 @@ import org.testng.internal.*; import org.testng.internal.annotations.IAnnotationFinder; import org.testng.internal.invokers.ConfigMethodArguments; -import org.testng.internal.invokers.ConfigMethodArguments.Builder; import org.testng.internal.invokers.IInvocationStatus; import org.testng.internal.invokers.IInvoker; import org.testng.internal.invokers.InvokedMethod; @@ -156,6 +155,7 @@ public T newInstance(Class cls, Object... parameters) { } @Override + @SuppressWarnings("TypeParameterUnusedInFormals") // signature fixed by the interface public T newInstance(String clsName, Object... parameters) { try { return suiteObjectFactory.newInstance(clsName, parameters); @@ -241,6 +241,7 @@ public void setReportResults(boolean reportResults) { useDefaultListeners = reportResults; } + @Override public ITestListener getExitCodeListener() { return exitCodeListener; } @@ -262,12 +263,9 @@ private void invokeListeners(boolean start) { } } - private void setOutputDir(String outputdir) { - if (isStringBlank(outputdir) && useDefaultListeners) { - outputdir = DEFAULT_OUTPUT_DIR; - } - - outputDir = null != outputdir ? new File(outputdir).getAbsolutePath() : null; + private void setOutputDir(String dir) { + String resolved = isStringBlank(dir) && useDefaultListeners ? DEFAULT_OUTPUT_DIR : dir; + outputDir = null != resolved ? new File(resolved).getAbsolutePath() : null; } private ITestRunnerFactory buildRunnerFactory(Comparator comparator) { @@ -361,7 +359,7 @@ private void privateRun() { if (invoker != null) { if (!beforeSuiteMethods.values().isEmpty()) { ConfigMethodArguments arguments = - new Builder() + new ConfigMethodArguments.Builder() .usingConfigMethodsAs(beforeSuiteMethods.values()) .forSuite(xmlSuite) .usingParameters(xmlSuite.getParameters()) @@ -389,7 +387,7 @@ private void privateRun() { // if (!afterSuiteMethods.values().isEmpty()) { ConfigMethodArguments arguments = - new Builder() + new ConfigMethodArguments.Builder() .usingConfigMethodsAs(afterSuiteMethods.values()) .forSuite(xmlSuite) .usingParameters(xmlSuite.getAllParameters()) diff --git a/testng-core/src/main/java/org/testng/TestNG.java b/testng-core/src/main/java/org/testng/TestNG.java index 2989c251f5..5700f53662 100644 --- a/testng-core/src/main/java/org/testng/TestNG.java +++ b/testng-core/src/main/java/org/testng/TestNG.java @@ -878,9 +878,9 @@ public List getSuiteListeners() { private Integer m_suiteThreadPoolSize = CommandLineArgs.SUITE_THREAD_POOL_SIZE_DEFAULT; - private boolean m_randomizeSuites = Boolean.FALSE; + private boolean m_randomizeSuites = false; - private boolean m_alwaysRun = Boolean.TRUE; + private boolean m_alwaysRun = true; private Boolean m_preserveOrder = XmlSuite.DEFAULT_PRESERVE_ORDER; private @Nullable Boolean m_groupByInstances; @@ -1807,7 +1807,7 @@ public void configure(Map cmdLineArgs) { (String) cmdLineArgs.getOrDefault( CommandLineArgs.XML_PATH_IN_JAR, CommandLineArgs.XML_PATH_IN_JAR_DEFAULT); - result.mixed = (Boolean) cmdLineArgs.getOrDefault(CommandLineArgs.MIXED, Boolean.FALSE); + result.mixed = (Boolean) cmdLineArgs.getOrDefault(CommandLineArgs.MIXED, false); Object tmpValue = cmdLineArgs.get(CommandLineArgs.INCLUDE_ALL_DATA_DRIVEN_TESTS_WHEN_SKIPPING); if (tmpValue != null) { result.includeAllDataDrivenTestsWhenSkipping = Boolean.parseBoolean(tmpValue.toString()); @@ -1816,9 +1816,7 @@ public void configure(Map cmdLineArgs) { (Boolean) cmdLineArgs.get(CommandLineArgs.SKIP_FAILED_INVOCATION_COUNTS); result.failIfAllTestsSkipped = Boolean.parseBoolean( - cmdLineArgs - .getOrDefault(CommandLineArgs.FAIL_IF_ALL_TESTS_SKIPPED, Boolean.FALSE) - .toString()); + cmdLineArgs.getOrDefault(CommandLineArgs.FAIL_IF_ALL_TESTS_SKIPPED, false).toString()); result.spiListenersToSkip = (String) cmdLineArgs.getOrDefault(CommandLineArgs.LISTENERS_TO_SKIP_VIA_SPI, ""); String parallelMode = (String) cmdLineArgs.get(CommandLineArgs.PARALLEL); diff --git a/testng-core/src/main/java/org/testng/TestRunner.java b/testng-core/src/main/java/org/testng/TestRunner.java index bb6e3542af..f4fa4d3b55 100644 --- a/testng-core/src/main/java/org/testng/TestRunner.java +++ b/testng-core/src/main/java/org/testng/TestRunner.java @@ -53,7 +53,6 @@ import org.testng.internal.annotations.IAnnotationFinder; import org.testng.internal.invokers.AbstractParallelWorker; import org.testng.internal.invokers.ConfigMethodArguments; -import org.testng.internal.invokers.ConfigMethodArguments.Builder; import org.testng.internal.invokers.IInvoker; import org.testng.internal.invokers.Invoker; import org.testng.internal.objects.IObjectDispenser; @@ -668,7 +667,7 @@ private void beforeRun() { private void invokeTestConfigurations(ITestNGMethod[] testConfigurationMethods) { if (null != testConfigurationMethods && testConfigurationMethods.length > 0) { ConfigMethodArguments arguments = - new Builder() + new ConfigMethodArguments.Builder() .usingConfigMethodsAs(testConfigurationMethods) .forSuite(m_xmlTest.getSuite()) .usingParameters(m_xmlTest.getAllParameters()) diff --git a/testng-core/src/main/java/org/testng/internal/BaseTestMethod.java b/testng-core/src/main/java/org/testng/internal/BaseTestMethod.java index 51f0ccb002..274a54f870 100644 --- a/testng-core/src/main/java/org/testng/internal/BaseTestMethod.java +++ b/testng-core/src/main/java/org/testng/internal/BaseTestMethod.java @@ -777,11 +777,11 @@ public void setRetryAnalyzerClass(Class clazz) { m_retryAnalyzerClass = clazz == null ? DisabledRetryAnalyzer.class : clazz; } - @Override /** * @return the retry analyzer class, never null: it is {@link DisabledRetryAnalyzer} until a retry * analyzer is set, and the setter normalises null back to it. */ + @Override public Class getRetryAnalyzerClass() { return m_retryAnalyzerClass; } diff --git a/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java b/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java index 8f27cf3245..581438ab97 100644 --- a/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java +++ b/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java @@ -2,12 +2,8 @@ import java.io.IOException; import java.io.InputStream; -import org.testng.log4testng.Logger; public class DataProviderLoader extends ClassLoader { - private static final int BUFFER_SIZE = 1 << 20; - private static final Logger log = Logger.getLogger(DataProviderLoader.class); - public Class loadClazz(String path) throws ClassNotFoundException { Class clazz = findLoadedClass(path); if (clazz == null) { diff --git a/testng-core/src/main/java/org/testng/internal/DynamicGraph.java b/testng-core/src/main/java/org/testng/internal/DynamicGraph.java index dbadec54db..bbb3abdb94 100644 --- a/testng-core/src/main/java/org/testng/internal/DynamicGraph.java +++ b/testng-core/src/main/java/org/testng/internal/DynamicGraph.java @@ -26,6 +26,7 @@ public class DynamicGraph implements IDynamicGraph { private Set visualisers = new HashSet<>(); /** Add a node to the graph. */ + @Override public boolean addNode(T node) { return m_nodesReady.add(node); } @@ -36,15 +37,18 @@ public boolean addNode(T node) { * @param from - Represents the edge that depends on another edge. * @param to - Represents the edge on which another edge depends upon. */ + @Override public void addEdge(int weight, T from, T to) { m_edges.addEdge(weight, from, to, false); } + @Override public void setVisualisers(Set listener) { visualisers = listener; } /** Add an edge between two nodes. */ + @Override public void addEdges(int weight, T from, Iterable tos) { for (T to : tos) { addEdge(weight, from, to); @@ -52,6 +56,7 @@ public void addEdges(int weight, T from, Iterable tos) { } /** @return a set of all the nodes that don't depend on any other nodes. */ + @Override public List getFreeNodes() { // Get a list of nodes that are ready and have no outgoing edges. Set free = new LinkedHashSet<>(m_nodesReady); @@ -85,6 +90,7 @@ public List getUpstreamDependenciesFor(T node) { return dependencies(m_edges.from(node)); } + @Override public List getDependenciesFor(T node) { return dependencies(m_edges.to(node)); } @@ -96,6 +102,7 @@ private List dependencies(@Nullable Map dependencies) { } /** Set the status for a set of nodes. */ + @Override public void setStatus(Collection nodes, Status status) { for (T n : nodes) { setStatus(n, status); @@ -103,6 +110,7 @@ public void setStatus(Collection nodes, Status status) { } /** Set the status for a node. */ + @Override public void setStatus(T node, Status status) { switch (status) { case RUNNING: @@ -149,14 +157,17 @@ public void setStatus(T node, Status status) { } /** @return the number of nodes in this graph. */ + @Override public int getNodeCount() { return m_nodesReady.size() + m_nodesRunning.size() + m_nodesFinished.size(); } + @Override public int getNodeCountWithStatus(Status status) { return getNodesWithStatus(status).size(); } + @Override public Set getNodesWithStatus(Status status) { switch (status) { case READY: @@ -191,6 +202,7 @@ private static String dotShortName(T t) { } /** @return a .dot file (GraphViz) version of this graph. */ + @Override public String toDot() { String FREE = "[style=filled color=yellow]"; String RUNNING = "[style=filled color=green]"; diff --git a/testng-core/src/main/java/org/testng/internal/MethodSorting.java b/testng-core/src/main/java/org/testng/internal/MethodSorting.java index 288cf134ef..0fe26b18e4 100644 --- a/testng-core/src/main/java/org/testng/internal/MethodSorting.java +++ b/testng-core/src/main/java/org/testng/internal/MethodSorting.java @@ -34,7 +34,9 @@ public String toString() { } }, NONE("none") { + // Comparator fixes the signature, and NONE compares nothing. @Override + @SuppressWarnings("unused") public int compare(ITestNGMethod o1, ITestNGMethod o2) { return 0; } diff --git a/testng-core/src/main/java/org/testng/internal/ObjectBag.java b/testng-core/src/main/java/org/testng/internal/ObjectBag.java index 0e584b0c20..5785ba1aac 100644 --- a/testng-core/src/main/java/org/testng/internal/ObjectBag.java +++ b/testng-core/src/main/java/org/testng/internal/ObjectBag.java @@ -7,7 +7,6 @@ import java.util.concurrent.ExecutorService; import java.util.function.Supplier; import org.testng.ISuite; -import org.testng.log4testng.Logger; import org.testng.xml.XmlSuite; /** @@ -16,7 +15,6 @@ */ public final class ObjectBag { - private static final Logger logger = Logger.getLogger(ObjectBag.class); private final Map, Object> bag = new ConcurrentHashMap<>(); private static final Map instances = new ConcurrentHashMap<>(); diff --git a/testng-core/src/main/java/org/testng/internal/Parameters.java b/testng-core/src/main/java/org/testng/internal/Parameters.java index a5f5cf7000..55c2854c09 100644 --- a/testng-core/src/main/java/org/testng/internal/Parameters.java +++ b/testng-core/src/main/java/org/testng/internal/Parameters.java @@ -428,7 +428,7 @@ private static void checkParameterTypes( if (parameterNames.length == 0) { // parameterNames is usually populated via the @Parameters annotation, so we would need to // apply our logic only when @Parameters annotation is not involved. - boolean invalid = (totalLength != 0) || (!validParameters(methodAnnotation, parameterTypes)); + boolean invalid = (totalLength != 0) || !validParameters(methodAnnotation, parameterTypes); if (invalid) { String annotation = methodAnnotation; if (!methodAnnotation.startsWith("@")) { diff --git a/testng-core/src/main/java/org/testng/internal/RegexpExpectedExceptionsHolder.java b/testng-core/src/main/java/org/testng/internal/RegexpExpectedExceptionsHolder.java index ac1831695e..b69e60f9f5 100644 --- a/testng-core/src/main/java/org/testng/internal/RegexpExpectedExceptionsHolder.java +++ b/testng-core/src/main/java/org/testng/internal/RegexpExpectedExceptionsHolder.java @@ -36,6 +36,7 @@ public boolean isThrowableMatching(Throwable ite) { && Pattern.compile(messageRegExp, Pattern.DOTALL).matcher(message).matches(); } + @Override public String getWrongExceptionMessage(Throwable ite) { return "The exception was thrown with the wrong message:" + " expected \"" diff --git a/testng-core/src/main/java/org/testng/internal/ScriptSelectorFactory.java b/testng-core/src/main/java/org/testng/internal/ScriptSelectorFactory.java index 39f5d8eefb..6772b853f5 100644 --- a/testng-core/src/main/java/org/testng/internal/ScriptSelectorFactory.java +++ b/testng-core/src/main/java/org/testng/internal/ScriptSelectorFactory.java @@ -1,6 +1,7 @@ package org.testng.internal; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.ServiceLoader; @@ -20,12 +21,12 @@ public static ScriptMethodSelector getScriptSelector(XmlScript script) { throw new IllegalArgumentException("Language name must not be null"); } - String languageName = script.getLanguage().toLowerCase(); + String languageName = script.getLanguage().toLowerCase(Locale.ROOT); ScriptEngineFactory engineFactory = ENGINE_FACTORIES.get(languageName); if (engineFactory == null) { ServiceLoader loader = ServiceLoader.load(ScriptEngineFactory.class); for (ScriptEngineFactory factory : loader) { - ENGINE_FACTORIES.put(factory.getLanguageName().toLowerCase(), factory); + ENGINE_FACTORIES.put(factory.getLanguageName().toLowerCase(Locale.ROOT), factory); } engineFactory = ENGINE_FACTORIES.get(languageName); diff --git a/testng-core/src/main/java/org/testng/internal/TestMethodContainer.java b/testng-core/src/main/java/org/testng/internal/TestMethodContainer.java index 7f140e086a..a4b3510f66 100644 --- a/testng-core/src/main/java/org/testng/internal/TestMethodContainer.java +++ b/testng-core/src/main/java/org/testng/internal/TestMethodContainer.java @@ -22,6 +22,7 @@ public TestMethodContainer(Supplier supplier) { this.supplier = supplier; } + @Override public ITestNGMethod[] getItems() { if (isCleared()) { // If the cached data was cleared, no longer try to refer to it, but instead @@ -40,6 +41,7 @@ public boolean isCleared() { return isCleared; } + @Override public void clearItems() { if (isCleared) { return; diff --git a/testng-core/src/main/java/org/testng/internal/TestNGMethodFinder.java b/testng-core/src/main/java/org/testng/internal/TestNGMethodFinder.java index 24c6d8e9ca..eb7b1ffcb1 100644 --- a/testng-core/src/main/java/org/testng/internal/TestNGMethodFinder.java +++ b/testng-core/src/main/java/org/testng/internal/TestNGMethodFinder.java @@ -40,8 +40,6 @@ enum MethodType { AFTER_GROUPS } - private static final Comparator NO_COMPARISON = (o1, o2) -> 0; - private final ITestObjectFactory objectFactory; private final RunInfo runInfo; private final IAnnotationFinder annotationFinder; @@ -49,7 +47,7 @@ enum MethodType { public TestNGMethodFinder( ITestObjectFactory objectFactory, RunInfo runInfo, IAnnotationFinder annotationFinder) { - this(objectFactory, runInfo, annotationFinder, NO_COMPARISON); + this(objectFactory, runInfo, annotationFinder, MethodSorting.NONE); } public TestNGMethodFinder( diff --git a/testng-core/src/main/java/org/testng/internal/annotations/AnnotationHelper.java b/testng-core/src/main/java/org/testng/internal/annotations/AnnotationHelper.java index 05719c4547..064a909842 100644 --- a/testng-core/src/main/java/org/testng/internal/annotations/AnnotationHelper.java +++ b/testng-core/src/main/java/org/testng/internal/annotations/AnnotationHelper.java @@ -258,7 +258,7 @@ public static ITestNGMethod[] findMethodsWithAnnotation( || isAnnotationPresent(annotationFinder, m); boolean isPublic = Modifier.isPublic(m.getModifiers()); boolean isSynthetic = m.isSynthetic(); - if ((isPublic && hasClassAnnotation && !isSynthetic && (!hasTestNGAnnotation)) + if ((isPublic && hasClassAnnotation && !isSynthetic && !hasTestNGAnnotation) || hasMethodAnnotation) { // Small hack to allow users to specify @Configuration classes even though diff --git a/testng-core/src/main/java/org/testng/internal/annotations/ConfigurationAnnotation.java b/testng-core/src/main/java/org/testng/internal/annotations/ConfigurationAnnotation.java index 6cb4eae66a..41c79a173e 100644 --- a/testng-core/src/main/java/org/testng/internal/annotations/ConfigurationAnnotation.java +++ b/testng-core/src/main/java/org/testng/internal/annotations/ConfigurationAnnotation.java @@ -198,6 +198,7 @@ public boolean isLastTimeOnly() { return m_lastTimeOnly; } + @Override public boolean isIgnoreFailure() { return m_ignoreFailure; } diff --git a/testng-core/src/main/java/org/testng/internal/annotations/DataProviderAnnotation.java b/testng-core/src/main/java/org/testng/internal/annotations/DataProviderAnnotation.java index 900ad921cc..966b8faa1b 100644 --- a/testng-core/src/main/java/org/testng/internal/annotations/DataProviderAnnotation.java +++ b/testng-core/src/main/java/org/testng/internal/annotations/DataProviderAnnotation.java @@ -67,6 +67,7 @@ public Class retryUsing() { return retryUsing; } + @Override public void cacheDataForTestRetries(boolean cache) { this.cachedDataForTestRetries = cache; } diff --git a/testng-core/src/main/java/org/testng/internal/annotations/FactoryAnnotation.java b/testng-core/src/main/java/org/testng/internal/annotations/FactoryAnnotation.java index e2f098097d..7b9bb809db 100644 --- a/testng-core/src/main/java/org/testng/internal/annotations/FactoryAnnotation.java +++ b/testng-core/src/main/java/org/testng/internal/annotations/FactoryAnnotation.java @@ -25,6 +25,7 @@ public void setDataProvider(String dataProvider) { m_dataProvider = dataProvider; } + @Override public void setDataProviderClass(@Nullable Class dataProviderClass) { m_dataProviderClass = dataProviderClass; } diff --git a/testng-core/src/main/java/org/testng/internal/annotations/IBaseBeforeAfter.java b/testng-core/src/main/java/org/testng/internal/annotations/IBaseBeforeAfter.java index 78080c6f59..deddf156ea 100644 --- a/testng-core/src/main/java/org/testng/internal/annotations/IBaseBeforeAfter.java +++ b/testng-core/src/main/java/org/testng/internal/annotations/IBaseBeforeAfter.java @@ -6,9 +6,11 @@ /** Base interface for IBeforeSuite, IAfterSuite, etc... */ public interface IBaseBeforeAfter extends ITestOrConfiguration { /** Whether methods on this class/method are enabled. */ + @Override boolean getEnabled(); /** The list of groups this class/method belongs to. */ + @Override String[] getGroups(); /** @@ -16,6 +18,7 @@ public interface IBaseBeforeAfter extends ITestOrConfiguration { * guaranteed to have been invoked before this method. Furthermore, if any of these methods was * not a SUCCESS, this test method will not be run and will be flagged as a SKIP. */ + @Override String[] getDependsOnGroups(); /** @@ -26,6 +29,7 @@ public interface IBaseBeforeAfter extends ITestOrConfiguration { * *

If some of these methods have been overloaded, all the overloaded versions will be run. */ + @Override String[] getDependsOnMethods(); /** @@ -47,6 +51,7 @@ public interface IBaseBeforeAfter extends ITestOrConfiguration { * The description for this method. The string used will appear in the HTML report and also on * standard output if verbose > 2. */ + @Override @Nullable String getDescription(); diff --git a/testng-core/src/main/java/org/testng/internal/invokers/BaseInvoker.java b/testng-core/src/main/java/org/testng/internal/invokers/BaseInvoker.java index b47d9b133d..71e2bc9489 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/BaseInvoker.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/BaseInvoker.java @@ -103,7 +103,7 @@ protected void runInvokedMethodListeners( } private boolean noListenersPresent() { - return (m_invokedMethodListeners == null) || (m_invokedMethodListeners.isEmpty()); + return (m_invokedMethodListeners == null) || m_invokedMethodListeners.isEmpty(); } /** diff --git a/testng-core/src/main/java/org/testng/internal/invokers/ConfigInvoker.java b/testng-core/src/main/java/org/testng/internal/invokers/ConfigInvoker.java index 8ba1d32319..0d43db80a1 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/ConfigInvoker.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/ConfigInvoker.java @@ -44,7 +44,6 @@ import org.testng.internal.TestResult; import org.testng.internal.Utils; import org.testng.internal.annotations.AnnotationHelper; -import org.testng.internal.invokers.ConfigMethodArguments.Builder; import org.testng.internal.thread.ThreadUtil; import org.testng.xml.XmlClass; import org.testng.xml.XmlSuite; @@ -99,6 +98,7 @@ public IConfiguration getConfiguration() { * @return false if this class has successfully run all its @Configuration method or true if at * least one of these methods failed. */ + @Override public boolean hasConfigurationFailureFor( @Nullable ITestNGMethod testNGMethod, String[] groups, @@ -171,6 +171,7 @@ public boolean hasConfigurationFailureFor( * * @param arguments - A {@link GroupConfigMethodArguments} object. */ + @Override public void invokeBeforeGroupsConfigurations(GroupConfigMethodArguments arguments) { String[] groups = arguments.getTestMethod().getGroups(); @@ -192,7 +193,7 @@ public void invokeBeforeGroupsConfigurations(GroupConfigMethodArguments argument // don't pass the IClass or the instance as the method may be external // the invocation must be similar to @BeforeTest/@BeforeSuite ConfigMethodArguments configMethodArguments = - new Builder() + new ConfigMethodArguments.Builder() .usingConfigMethodsAs(filteredConfigurations) .forSuite(arguments.getSuite()) .usingParameters(arguments.getParameters()) @@ -213,6 +214,7 @@ private static boolean isGroupLevelConfigurationMethod(ITestNGMethod itm) { return itm.hasBeforeGroupsConfiguration() || itm.hasAfterGroupsConfiguration(); } + @Override public void invokeAfterGroupsConfigurations(GroupConfigMethodArguments arguments) { // Skip this if the current method doesn't belong to any group // (only a method that belongs to a group can trigger the invocation @@ -232,7 +234,7 @@ public void invokeAfterGroupsConfigurations(GroupConfigMethodArguments arguments // don't pass the IClass or the instance as the method may be external // the invocation must be similar to @BeforeTest/@BeforeSuite ConfigMethodArguments configMethodArguments = - new Builder() + new ConfigMethodArguments.Builder() .usingConfigMethodsAs(filteredConfigurations) .forSuite(arguments.getSuite()) .usingParameters(arguments.getParameters()) @@ -247,6 +249,7 @@ public void invokeAfterGroupsConfigurations(GroupConfigMethodArguments arguments arguments.getGroupMethods().removeAfterGroups(filteredGroups); } + @Override public void invokeConfigurations(ConfigMethodArguments arguments) { if (arguments.getConfigMethods().length == 0) { log(5, "No configuration methods found"); diff --git a/testng-core/src/main/java/org/testng/internal/invokers/ExceptionUtils.java b/testng-core/src/main/java/org/testng/internal/invokers/ExceptionUtils.java index 32479616f1..50b81fed2e 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/ExceptionUtils.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/ExceptionUtils.java @@ -45,7 +45,7 @@ private static boolean sameInstance(ITestResult configResult, Object instance) { private static @Nullable Throwable getConfigFailureException(ITestContext context) { for (IInvokedMethod method : context.getSuite().getAllInvokedMethods()) { ITestNGMethod m = method.getTestMethod(); - if (m.isBeforeSuiteConfiguration() && (!method.getTestResult().isSuccess())) { + if (m.isBeforeSuiteConfiguration() && !method.getTestResult().isSuccess()) { return method.getTestResult().getThrowable(); } } diff --git a/testng-core/src/main/java/org/testng/internal/invokers/Invoker.java b/testng-core/src/main/java/org/testng/internal/invokers/Invoker.java index 40116e8295..e8fb1e9ba9 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/Invoker.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/Invoker.java @@ -66,10 +66,12 @@ public Invoker( suiteRunner); } + @Override public IConfigInvoker getConfigInvoker() { return m_configInvoker; } + @Override public ITestInvoker getTestInvoker() { return m_testInvoker; } diff --git a/testng-core/src/main/java/org/testng/internal/invokers/MethodRunner.java b/testng-core/src/main/java/org/testng/internal/invokers/MethodRunner.java index 781684bee5..cb8a83ca11 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/MethodRunner.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/MethodRunner.java @@ -24,7 +24,6 @@ import org.testng.internal.ObjectBag; import org.testng.internal.Parameters; import org.testng.internal.invokers.ITestInvoker.FailureContext; -import org.testng.internal.invokers.TestMethodArguments.Builder; import org.testng.internal.thread.Async; import org.testng.internal.thread.TestNGThreadFactory; import org.testng.internal.thread.ThreadUtil; @@ -56,7 +55,7 @@ public List runInSequence( List tmpResults = new ArrayList<>(); int tmpResultsIndex = -1; TestMethodArguments tmArguments = - new Builder() + new TestMethodArguments.Builder() .usingArguments(arguments) .withParameterValues(parameterValues) .withParametersIndex(parametersIndex) diff --git a/testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java b/testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java index 07e3632146..ff71a87118 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java @@ -62,7 +62,6 @@ import org.testng.internal.TestListenerHelper; import org.testng.internal.TestResult; import org.testng.internal.Utils; -import org.testng.internal.invokers.GroupConfigMethodArguments.Builder; import org.testng.internal.invokers.InvokeMethodRunnable.TestNGRuntimeException; import org.testng.internal.thread.ThreadExecutionException; import org.testng.internal.thread.ThreadUtil; @@ -105,6 +104,7 @@ public ITestResultNotifier getNotifier() { return m_notifier; } + @Override public List invokeTestMethods( ITestNGMethod testMethod, ConfigurationGroupMethods groupMethods, @@ -181,7 +181,7 @@ public List invokeTestMethods( } testMethod.incrementCurrentInvocationCount(); GroupConfigMethodArguments args = - new Builder() + new GroupConfigMethodArguments.Builder() .forTestMethod(testMethod) .withGroupConfigMethods(groupMethods) .forInstance(instance) @@ -241,6 +241,7 @@ public List invokeTestMethods( * invoking @BeforeGroup, @BeforeMethod, @AfterMethod, @AfterGroup if it is the case for the * passed in @Test method. */ + @Override public ITestResult invokeTestMethod( TestMethodArguments arguments, XmlSuite suite, FailureContext failureContext) { // Mark this method with the current thread id @@ -249,6 +250,7 @@ public ITestResult invokeTestMethod( return invokeMethod(arguments, suite, failureContext); } + @Override public FailureContext retryFailed( TestMethodArguments arguments, List result, @@ -308,6 +310,7 @@ public FailureContext retryFailed( return failure; } + @Override public void runTestResultListener(ITestResult tr) { // For onTestStart method, still run as insert order // but regarding @@ -627,6 +630,7 @@ private void collectResults(ITestNGMethod testMethod, ITestResult result) { } } + @Override public void invokeListenersForSkippedTestResult(ITestResult r, IInvokedMethod invokedMethod) { if (m_configuration.alwaysRunListeners()) { runInvokedMethodListeners(BEFORE_INVOCATION, invokedMethod, r); diff --git a/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWithDataProviderMethodWorker.java b/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWithDataProviderMethodWorker.java index c27e2949b8..d7d2ddde78 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWithDataProviderMethodWorker.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWithDataProviderMethodWorker.java @@ -10,7 +10,6 @@ import org.testng.ITestNGMethod; import org.testng.ITestResult; import org.testng.internal.ConfigurationGroupMethods; -import org.testng.internal.invokers.TestMethodArguments.Builder; import org.testng.xml.XmlSuite; public class TestMethodWithDataProviderMethodWorker @@ -75,7 +74,7 @@ public List call() { try { tmpResults.add( m_testInvoker.invokeTestMethod( - new Builder() + new TestMethodArguments.Builder() .usingInstance(m_instance) .forTestMethod(m_testMethod) .withParameterValues(m_parameterValues) @@ -99,7 +98,7 @@ public List call() { m_failureCount = m_testInvoker .retryFailed( - new Builder() + new TestMethodArguments.Builder() .usingInstance(instance) .forTestMethod(m_testMethod) .withParameterValues(m_parameterValues) diff --git a/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWorker.java b/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWorker.java index 17c2000b10..aaf8df1daf 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWorker.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/TestMethodWorker.java @@ -30,7 +30,6 @@ import org.testng.internal.TestMethodComparator; import org.testng.internal.TestMethodContainer; import org.testng.internal.Utils; -import org.testng.internal.invokers.ConfigMethodArguments.Builder; import org.testng.thread.IWorker; /** @@ -207,7 +206,7 @@ protected void invokeBeforeClassMethods(ITestClass testClass, IMethodInstance mi listener.onBeforeClass(testClass); } ConfigMethodArguments attributes = - new Builder() + new ConfigMethodArguments.Builder() .forTestClass(testClass) .usingConfigMethodsAs( ((ITestClassConfigInfo) testClass) @@ -259,7 +258,7 @@ private void invokeAfterClassConfigurations( ITestClass testClass, List invokeInstances) { for (IMethodInstance invokeInstance : invokeInstances) { ConfigMethodArguments attributes = - new Builder() + new ConfigMethodArguments.Builder() .forTestClass(testClass) .forSuite(m_testContext.getSuite().getXmlSuite()) .usingParameters(m_parameters) diff --git a/testng-core/src/main/java/org/testng/internal/invokers/TestNgMethodUtils.java b/testng-core/src/main/java/org/testng/internal/invokers/TestNgMethodUtils.java index 94b54c6243..f40c94ae35 100644 --- a/testng-core/src/main/java/org/testng/internal/invokers/TestNgMethodUtils.java +++ b/testng-core/src/main/java/org/testng/internal/invokers/TestNgMethodUtils.java @@ -97,7 +97,7 @@ static ITestNGMethod[] filterMethods( for (ITestNGMethod tm : methods) { String msg; if ((predicate.test(tm, testClass) && isSameInstance(tm, instance)) - && (!TestNgMethodUtils.containsConfigurationMethod(tm, vResult))) { + && !TestNgMethodUtils.containsConfigurationMethod(tm, vResult)) { msg = Utils.getVerbose() < 10 ? "" : "Keeping method " + tm + " for class " + testClass; vResult.add(tm); } else { diff --git a/testng-core/src/main/java/org/testng/reporters/EmailableReporter2.java b/testng-core/src/main/java/org/testng/reporters/EmailableReporter2.java index cb29861a9b..c5baa5373e 100644 --- a/testng-core/src/main/java/org/testng/reporters/EmailableReporter2.java +++ b/testng-core/src/main/java/org/testng/reporters/EmailableReporter2.java @@ -466,7 +466,7 @@ private void writeScenario(int scenarioIndex, String label, ITestResult result) Object[] parameters = result.getParameters(); boolean hasRows = dumpParametersInfo("Factory Parameter", result.getFactoryParameters()); int parameterCount = parameters == null ? 0 : parameters.length; - hasRows |= dumpParametersInfo("Parameter", result.getParameters()); + hasRows |= dumpParametersInfo("Parameter", parameters); dumpAttributesInfo(result.getMethod().getAttributes()); // Write reporter messages (if any) diff --git a/testng-core/src/main/java/org/testng/reporters/JUnitXMLReporter.java b/testng-core/src/main/java/org/testng/reporters/JUnitXMLReporter.java index 0d48b14167..7c03776c18 100644 --- a/testng-core/src/main/java/org/testng/reporters/JUnitXMLReporter.java +++ b/testng-core/src/main/java/org/testng/reporters/JUnitXMLReporter.java @@ -218,7 +218,7 @@ private void createFailureElement(XMLStringBuffer doc, ITestResult tr) { if (t != null) { attrs.setProperty(XMLConstants.ATTR_TYPE, t.getClass().getName()); String message = t.getMessage(); - if ((message != null) && (!message.isEmpty())) { + if ((message != null) && !message.isEmpty()) { attrs.setProperty(XMLConstants.ATTR_MESSAGE, encodeAttr(message)); // ENCODE } doc.push(XMLConstants.FAILURE, attrs); diff --git a/testng-core/src/main/java/org/testng/reporters/XMLSuiteResultWriter.java b/testng-core/src/main/java/org/testng/reporters/XMLSuiteResultWriter.java index 1d6d07bdc7..8303e2a4b3 100644 --- a/testng-core/src/main/java/org/testng/reporters/XMLSuiteResultWriter.java +++ b/testng-core/src/main/java/org/testng/reporters/XMLSuiteResultWriter.java @@ -161,7 +161,7 @@ private void addTestResult(XMLStringBuffer xmlBuffer, ITestResult testResult) { Properties attribs = getTestResultAttributes(testResult); attribs.setProperty(XMLReporterConfig.ATTR_STATUS, getStatusString(testResult.getStatus())); if (testResult.wasRetried()) { - attribs.setProperty(XMLReporterConfig.ATTR_RETRIED, Boolean.TRUE.toString()); + attribs.setProperty(XMLReporterConfig.ATTR_RETRIED, "true"); } xmlBuffer.push(XMLReporterConfig.TAG_TEST_METHOD, attribs); addTestMethodParams(xmlBuffer, testResult); diff --git a/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java b/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java index a51183d1d6..5607ba6b4b 100644 --- a/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java +++ b/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java @@ -144,7 +144,6 @@ enum Location { private final String m_fileName; private final boolean m_loadClasses; - private boolean m_validate = false; private boolean m_doctypeDeclared = false; /** @@ -221,7 +220,6 @@ public InputSource resolveEntity(String publicId, String systemId) m_doctypeDeclared = true; if (skipConsideringSystemId(systemId)) { - m_validate = true; InputStream stream = loadDtdUsingClassLoader(); if (stream != null) { // Buffer the classpath DTD so this resolver, rather than SAX, owns and closes the stream. diff --git a/testng-core/src/main/java/org/testng/xml/TestNGURLs.java b/testng-core/src/main/java/org/testng/xml/TestNGURLs.java index 12b01d7a4a..26767a3da1 100644 --- a/testng-core/src/main/java/org/testng/xml/TestNGURLs.java +++ b/testng-core/src/main/java/org/testng/xml/TestNGURLs.java @@ -4,6 +4,7 @@ import java.net.URL; import java.util.Arrays; import java.util.List; +import java.util.Locale; final class TestNGURLs { @@ -13,7 +14,7 @@ private TestNGURLs() {} static boolean isDTDDomainInternallyKnownToTestNG(String publicId) { try { - URL url = new URL(publicId.toLowerCase().trim()); + URL url = new URL(publicId.toLowerCase(Locale.ROOT).trim()); return DOMAINS.contains(url.getHost()); } catch (MalformedURLException e) { return false; diff --git a/testng-core/src/test/java/org/testng/TestRunnerTest.java b/testng-core/src/test/java/org/testng/TestRunnerTest.java index 1a19152c40..5c3ef8a241 100644 --- a/testng-core/src/test/java/org/testng/TestRunnerTest.java +++ b/testng-core/src/test/java/org/testng/TestRunnerTest.java @@ -10,6 +10,7 @@ import org.testng.annotations.Test; import org.testng.internal.Configuration; import org.testng.internal.IConfiguration; +import org.testng.internal.MethodSorting; import org.testng.internal.objects.DefaultTestObjectFactory; import org.testng.xml.XmlClass; import org.testng.xml.XmlSuite; @@ -96,7 +97,8 @@ private TestRunner createTestRunner(Class testClass) { listeners, classListeners, (ISuiteRunnerListener) suite); - SuiteRunner suite = new SuiteRunner(configuration, xmlSuite, outputDir, factory, (o1, o2) -> 0); + SuiteRunner suite = + new SuiteRunner(configuration, xmlSuite, outputDir, factory, MethodSorting.NONE); return factory.newTestRunner(suite, xmlTest, emptyList(), emptyList()); } } diff --git a/testng-core/src/test/java/org/testng/internal/UtilsTest.java b/testng-core/src/test/java/org/testng/internal/UtilsTest.java index d52ece0ebd..415616d49e 100644 --- a/testng-core/src/test/java/org/testng/internal/UtilsTest.java +++ b/testng-core/src/test/java/org/testng/internal/UtilsTest.java @@ -1,6 +1,5 @@ package org.testng.internal; -import static java.lang.String.valueOf; import static java.util.Arrays.asList; import static java.util.Collections.emptyList; import static org.assertj.core.api.Assertions.assertThat; @@ -21,7 +20,8 @@ public class UtilsTest { @Test public void escapeUnicode() { assertThat(Utils.escapeUnicode("test")).isEqualTo("test"); - assertThat(Utils.escapeUnicode(valueOf(INVALID_CHAR))).isEqualTo(valueOf(REPLACEMENT_CHAR)); + assertThat(Utils.escapeUnicode(String.valueOf(INVALID_CHAR))) + .isEqualTo(String.valueOf(REPLACEMENT_CHAR)); } @Test diff --git a/testng-core/src/test/java/org/testng/reporters/TestHTMLReporterTest.java b/testng-core/src/test/java/org/testng/reporters/TestHTMLReporterTest.java index 7f2a6f9a70..953a17f58d 100644 --- a/testng-core/src/test/java/org/testng/reporters/TestHTMLReporterTest.java +++ b/testng-core/src/test/java/org/testng/reporters/TestHTMLReporterTest.java @@ -33,7 +33,7 @@ public void generateTableParametersToStringShouldBeFailsafe() { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw, true); - TestHTMLReporter.generateTable(pw, "title", tests, "cssClass", (t1, t2) -> 0); + TestHTMLReporter.generateTable(pw, "title", tests, "cssClass", (unusedLeft, unusedRight) -> 0); assertThat(sw.toString()) .contains("Parameters: org.testng.reporters.TestHTMLReporterTest$ThrowingOnToString@"); diff --git a/testng-core/src/test/java/org/testng/xml/SuiteXmlParserTest.java b/testng-core/src/test/java/org/testng/xml/SuiteXmlParserTest.java index f9fb724fe9..86efc96889 100644 --- a/testng-core/src/test/java/org/testng/xml/SuiteXmlParserTest.java +++ b/testng-core/src/test/java/org/testng/xml/SuiteXmlParserTest.java @@ -28,7 +28,7 @@ public void testParse(String fileName, boolean shouldWork) { SuiteXmlParser parser = new SuiteXmlParser(); try (FileInputStream stream = new FileInputStream(new File(PARENT, fileName))) { - XmlSuite suite = parser.parse(fileName, stream, false); + parser.parse(fileName, stream, false); if (!shouldWork) { fail("Parsing of " + fileName + " is supposed to fail"); } diff --git a/testng-core/src/test/java/org/testng/xml/XmlSuiteTest.java b/testng-core/src/test/java/org/testng/xml/XmlSuiteTest.java index adc7dc7081..64c806c8bb 100644 --- a/testng-core/src/test/java/org/testng/xml/XmlSuiteTest.java +++ b/testng-core/src/test/java/org/testng/xml/XmlSuiteTest.java @@ -244,6 +244,7 @@ public void write(int b) { } // Netbeans IDE automatically overrides this toString() + @Override public String toString() { return this.string.toString(); } diff --git a/testng-core/src/test/java/test/FileStringBufferTest.java b/testng-core/src/test/java/test/FileStringBufferTest.java index d17eaa4fef..b4b11bc846 100644 --- a/testng-core/src/test/java/test/FileStringBufferTest.java +++ b/testng-core/src/test/java/test/FileStringBufferTest.java @@ -19,7 +19,6 @@ public void basic() { { FileStringBuffer fsb = new FileStringBuffer(5); String s = "0123456789"; - String s3 = s + s + s; fsb.append(s); fsb.append(s); diff --git a/testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java b/testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java index ef4708d8e9..dfce2b526c 100644 --- a/testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java +++ b/testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java @@ -1,6 +1,5 @@ package test.annotationtransformer; -import static java.lang.Integer.valueOf; import static org.assertj.core.api.Assertions.assertThat; import org.testng.annotations.DataProvider; @@ -17,6 +16,6 @@ public Object[][] dp() { @Test(dataProvider = "dataProvider") public void f(Integer n) { - assertThat(n).isEqualTo(valueOf(42)); + assertThat(n).isEqualTo(Integer.valueOf(42)); } } diff --git a/testng-core/src/test/java/test/annotationtransformer/issue2312/RetryListener.java b/testng-core/src/test/java/test/annotationtransformer/issue2312/RetryListener.java index 4c1e2ced05..9c9fbb19ea 100644 --- a/testng-core/src/test/java/test/annotationtransformer/issue2312/RetryListener.java +++ b/testng-core/src/test/java/test/annotationtransformer/issue2312/RetryListener.java @@ -9,6 +9,7 @@ public class RetryListener implements IAnnotationTransformer { private static int executedNrOfTimes = 0; + @Override public void transform( ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { executedNrOfTimes++; diff --git a/testng-core/src/test/java/test/attributes/issue2346/LocalTestListener.java b/testng-core/src/test/java/test/attributes/issue2346/LocalTestListener.java index 5c40f959df..b7cec6078b 100644 --- a/testng-core/src/test/java/test/attributes/issue2346/LocalTestListener.java +++ b/testng-core/src/test/java/test/attributes/issue2346/LocalTestListener.java @@ -8,21 +8,25 @@ public class LocalTestListener implements ITestListener { public static Map data = new HashMap<>(); + @Override public void onTestStart(ITestResult iTestResult) { String key = "onTestStart_" + iTestResult.getMethod().getQualifiedName(); data.putIfAbsent(key, iTestResult.getAttributeNames().isEmpty()); } + @Override public void onTestSuccess(ITestResult iTestResult) { String key = "onTestSuccess_" + iTestResult.getMethod().getQualifiedName(); data.putIfAbsent(key, iTestResult.getAttributeNames().isEmpty()); } + @Override public void onTestFailure(ITestResult iTestResult) { String key = "onTestFailure_" + iTestResult.getMethod().getQualifiedName(); data.putIfAbsent(key, iTestResult.getAttributeNames().isEmpty()); } + @Override public void onTestSkipped(ITestResult iTestResult) { String key = "onTestSkipped_" + iTestResult.getMethod().getQualifiedName(); data.putIfAbsent(key, iTestResult.getAttributeNames().isEmpty()); diff --git a/testng-core/src/test/java/test/configuration/MultipleBeforeGroupTest.java b/testng-core/src/test/java/test/configuration/MultipleBeforeGroupTest.java index 5374f2239a..502b4dfcc6 100644 --- a/testng-core/src/test/java/test/configuration/MultipleBeforeGroupTest.java +++ b/testng-core/src/test/java/test/configuration/MultipleBeforeGroupTest.java @@ -14,7 +14,7 @@ public void beforeGroups() { m_count++; } - @Test() + @Test public void test() {} @Test(dependsOnMethods = "test") diff --git a/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesChildSample.java b/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesChildSample.java index bdd0f6b540..7f64f3781a 100644 --- a/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesChildSample.java +++ b/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesChildSample.java @@ -15,6 +15,6 @@ public void s2() {} dependsOnGroups = "g1") public void s1() {} - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesSample.java b/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesSample.java index 4083a028c9..90f8082c18 100644 --- a/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesSample.java +++ b/testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesSample.java @@ -18,6 +18,6 @@ public void s2() {} dependsOnGroups = "g1") public void s1() {} - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesChildSample.java b/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesChildSample.java index 4280cc80f9..5fec2f5687 100644 --- a/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesChildSample.java +++ b/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesChildSample.java @@ -15,6 +15,6 @@ public void s2() {} dependsOnGroups = "g1") public void s1() {} - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesSample.java b/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesSample.java index f076e41296..999c58e5eb 100644 --- a/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesSample.java +++ b/testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesSample.java @@ -18,6 +18,6 @@ public void s2() {} dependsOnGroups = "g1") public void s1() {} - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesChildSample.java b/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesChildSample.java index 55213e1f0d..231d5bc7b3 100644 --- a/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesChildSample.java +++ b/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesChildSample.java @@ -15,6 +15,6 @@ public void s2() {} dependsOnGroups = "g1") public void s1() {} - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesSample.java b/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesSample.java index f81aa8b0fb..46bb03c5bb 100644 --- a/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesSample.java +++ b/testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesSample.java @@ -18,6 +18,6 @@ public void s2() {} dependsOnGroups = "g1") public void s1() {} - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/configuration/issue2729/BeforeConfigTestSample.java b/testng-core/src/test/java/test/configuration/issue2729/BeforeConfigTestSample.java index ee232b6554..faaef0ff05 100644 --- a/testng-core/src/test/java/test/configuration/issue2729/BeforeConfigTestSample.java +++ b/testng-core/src/test/java/test/configuration/issue2729/BeforeConfigTestSample.java @@ -9,8 +9,9 @@ public class BeforeConfigTestSample { @BeforeClass public void beforeClass() { + // The division is the point: this @BeforeClass has to fail. @SuppressWarnings("ConstantOverflow") - int i = 5 / 0; + int unused = 5 / 0; } @BeforeMethod diff --git a/testng-core/src/test/java/test/configuration/issue3000/MyBaseTestSample.java b/testng-core/src/test/java/test/configuration/issue3000/MyBaseTestSample.java index ef2d6587db..fbfa64c496 100644 --- a/testng-core/src/test/java/test/configuration/issue3000/MyBaseTestSample.java +++ b/testng-core/src/test/java/test/configuration/issue3000/MyBaseTestSample.java @@ -5,6 +5,7 @@ abstract class MyBaseTestSample implements MyInterface { protected Object dependency; + @Override public void setDependency(Object ignored) {} @BeforeClass diff --git a/testng-core/src/test/java/test/dataprovider/InstanceDataProviderSample.java b/testng-core/src/test/java/test/dataprovider/InstanceDataProviderSample.java index a9c6de3a4b..a2d4a9b85a 100644 --- a/testng-core/src/test/java/test/dataprovider/InstanceDataProviderSample.java +++ b/testng-core/src/test/java/test/dataprovider/InstanceDataProviderSample.java @@ -1,6 +1,5 @@ package test.dataprovider; -import static java.lang.Integer.valueOf; import static org.assertj.core.api.Assertions.assertThat; import org.testng.annotations.DataProvider; @@ -15,6 +14,6 @@ public Object[][] dp() { @Test(dataProvider = "dp") public void f(Integer n) { - assertThat(n).isEqualTo(valueOf(hashCode())); + assertThat(n).isEqualTo(Integer.valueOf(hashCode())); } } diff --git a/testng-core/src/test/java/test/dataprovider/UnnamedDataProviderSample.java b/testng-core/src/test/java/test/dataprovider/UnnamedDataProviderSample.java index 47eed59b88..5286611490 100644 --- a/testng-core/src/test/java/test/dataprovider/UnnamedDataProviderSample.java +++ b/testng-core/src/test/java/test/dataprovider/UnnamedDataProviderSample.java @@ -10,6 +10,6 @@ public void doStuff(boolean t) {} @DataProvider public Object[][] unnamedDataProvider() { - return new Object[][] {{Boolean.TRUE}, {Boolean.FALSE}}; + return new Object[][] {{true}, {false}}; } } diff --git a/testng-core/src/test/java/test/enable/A.java b/testng-core/src/test/java/test/enable/A.java index 6818973ba1..37a1fb426f 100644 --- a/testng-core/src/test/java/test/enable/A.java +++ b/testng-core/src/test/java/test/enable/A.java @@ -11,7 +11,7 @@ public void testA() {} @Test public void testA2() {} - @Test() + @Test public void testA3() {} @Test(enabled = false) @@ -20,16 +20,16 @@ public void disabledA() {} @BeforeSuite public void beforeSuiteA() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteA2() {} @BeforeSuite(enabled = false) public void disabledBeforeSuiteA() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteNoRunA() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteNoRunA2() {} @BeforeSuite(enabled = false) @@ -47,16 +47,16 @@ public void disabledBeforeSuiteRunA() {} @AfterSuite public void afterSuiteA() {} - @AfterSuite() + @AfterSuite public void afterSuiteA2() {} @AfterSuite(enabled = false) public void disabledAfterSuiteA() {} - @AfterSuite() + @AfterSuite public void afterSuiteNoRunA() {} - @AfterSuite() + @AfterSuite public void afterSuiteNoRunA2() {} @AfterSuite(enabled = false) diff --git a/testng-core/src/test/java/test/enable/B.java b/testng-core/src/test/java/test/enable/B.java index f01a3e78c7..653a7666ed 100644 --- a/testng-core/src/test/java/test/enable/B.java +++ b/testng-core/src/test/java/test/enable/B.java @@ -12,13 +12,13 @@ public void testB() {} @Test public void testB2() {} - @Test() + @Test public void testB3() {} @Test(enabled = false) public void disabledB() {} - @BeforeSuite() + @BeforeSuite public void disabledBeforeSuiteB() {} @BeforeSuite @@ -27,10 +27,10 @@ public void disabledBeforeSuiteB2() {} @BeforeSuite(enabled = false) public void disabledBeforeSuiteB3() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteNoRunB() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteNoRunB2() {} @BeforeSuite(enabled = false) @@ -48,16 +48,16 @@ public void disabledBeforeSuiteRunB() {} @AfterSuite public void afterSuiteB() {} - @AfterSuite() + @AfterSuite public void afterSuiteB2() {} @AfterSuite(enabled = false) public void disabledAfterSuiteB() {} - @AfterSuite() + @AfterSuite public void afterSuiteNoRunB() {} - @AfterSuite() + @AfterSuite public void afterSuiteNoRunB2() {} @AfterSuite(enabled = false) diff --git a/testng-core/src/test/java/test/enable/C.java b/testng-core/src/test/java/test/enable/C.java index d310f255c2..84723febed 100644 --- a/testng-core/src/test/java/test/enable/C.java +++ b/testng-core/src/test/java/test/enable/C.java @@ -12,7 +12,7 @@ public void testC() {} @Test public void testC2() {} - @Test() + @Test public void testC3() {} @Test(enabled = false) @@ -21,16 +21,16 @@ public void disabledC() {} @BeforeSuite public void beforeSuiteC() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteC2() {} @BeforeSuite(enabled = false) public void disabledBeforeSuiteC() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteNoRunC() {} - @BeforeSuite() + @BeforeSuite public void beforeSuiteNoRunC2() {} @BeforeSuite(enabled = false) @@ -48,16 +48,16 @@ public void disabledBeforeSuiteRunC() {} @AfterSuite public void afterSuiteC() {} - @AfterSuite() + @AfterSuite public void afterSuiteC2() {} @AfterSuite(enabled = false) public void disabledAfterSuiteC() {} - @AfterSuite() + @AfterSuite public void afterSuiteNoRunC() {} - @AfterSuite() + @AfterSuite public void afterSuiteNoRunC2() {} @AfterSuite(enabled = false) diff --git a/testng-core/src/test/java/test/enable/Issue420BaseTestCase.java b/testng-core/src/test/java/test/enable/Issue420BaseTestCase.java index 2565f3e0f5..50b02d8be8 100644 --- a/testng-core/src/test/java/test/enable/Issue420BaseTestCase.java +++ b/testng-core/src/test/java/test/enable/Issue420BaseTestCase.java @@ -8,10 +8,10 @@ public abstract class Issue420BaseTestCase { @BeforeSuite(alwaysRun = true) public static void alwaysBeforeSuite() {} - @BeforeSuite() + @BeforeSuite public static void beforeSuite() {} - @AfterSuite() + @AfterSuite public static void afterSuite() {} @AfterSuite(alwaysRun = true) diff --git a/testng-core/src/test/java/test/factory/FactoryAndTestMethodTest.java b/testng-core/src/test/java/test/factory/FactoryAndTestMethodTest.java index 9d8e7ef3a4..1581e375fb 100644 --- a/testng-core/src/test/java/test/factory/FactoryAndTestMethodTest.java +++ b/testng-core/src/test/java/test/factory/FactoryAndTestMethodTest.java @@ -11,7 +11,7 @@ public class FactoryAndTestMethodTest { @Factory(dataProvider = "data") public Object[] ohNo(String s) { - return makeNullArgTests(s); + return new Object[0]; } public static class NullArgsTest { @@ -27,10 +27,6 @@ public void test() { } } - private Object[] makeNullArgTests(String s) { - return new Object[0]; - } - @DataProvider(name = "data") public Object[][] makeData() { return new Object[][] {{"foo"}}; diff --git a/testng-core/src/test/java/test/factory/FactoryDataProviderSample.java b/testng-core/src/test/java/test/factory/FactoryDataProviderSample.java index 3986397ac8..f01b34824f 100644 --- a/testng-core/src/test/java/test/factory/FactoryDataProviderSample.java +++ b/testng-core/src/test/java/test/factory/FactoryDataProviderSample.java @@ -18,6 +18,7 @@ public static Object[][] dp() { }; } + @Override @Test public void f() {} } diff --git a/testng-core/src/test/java/test/factory/github2428/Reporter.java b/testng-core/src/test/java/test/factory/github2428/Reporter.java index 582f2aeea5..01deab14b0 100644 --- a/testng-core/src/test/java/test/factory/github2428/Reporter.java +++ b/testng-core/src/test/java/test/factory/github2428/Reporter.java @@ -15,6 +15,7 @@ public Set getResults() { return results; } + @Override public void generateReport( List xmlSuites, List suites, String outputDirectory) { suites diff --git a/testng-core/src/test/java/test/factory/sample/Factory2TestSample.java b/testng-core/src/test/java/test/factory/sample/Factory2TestSample.java index ea5bf6bade..622cc6d78e 100644 --- a/testng-core/src/test/java/test/factory/sample/Factory2TestSample.java +++ b/testng-core/src/test/java/test/factory/sample/Factory2TestSample.java @@ -8,7 +8,7 @@ */ public class Factory2TestSample { - @Factory() + @Factory public Object[] createObjects() { return new Object[] {new Factory2Sample(), new Factory2Sample()}; } diff --git a/testng-core/src/test/java/test/github1461/MemoryLeakTestNg.java b/testng-core/src/test/java/test/github1461/MemoryLeakTestNg.java index d919692fd1..942076b56e 100644 --- a/testng-core/src/test/java/test/github1461/MemoryLeakTestNg.java +++ b/testng-core/src/test/java/test/github1461/MemoryLeakTestNg.java @@ -48,8 +48,10 @@ private static void runTest() { // create TestNG class TestNG testng = new TestNG() { + // Overriding finalize is the observation: the log line is how this test shows the + // TestNG instance is never reclaimed. @Override - @SuppressWarnings("deprecation") + @SuppressWarnings({"deprecation", "Finalize"}) protected void finalize() { // it seems that this object will never be finalized !!! log.debug("TestNG finalized"); diff --git a/testng-core/src/test/java/test/github1461/MyTestClassWithGlobalReferenceCounterSample.java b/testng-core/src/test/java/test/github1461/MyTestClassWithGlobalReferenceCounterSample.java index 944a47f1c1..d975ee33a2 100644 --- a/testng-core/src/test/java/test/github1461/MyTestClassWithGlobalReferenceCounterSample.java +++ b/testng-core/src/test/java/test/github1461/MyTestClassWithGlobalReferenceCounterSample.java @@ -27,8 +27,10 @@ public void aTestMethod2() { log.debug("test method 2"); } + // The finalizer is what decrements the counter MemoryLeakTestNg spins on. Without it that + // loop never reaches zero and the test fails on its timeOut. @Override - @SuppressWarnings("deprecation") + @SuppressWarnings({"deprecation", "Finalize"}) protected void finalize() { log.debug("finalize"); // this will be called when this object is removed from the heap diff --git a/testng-core/src/test/java/test/github765/DuplicateCallsSample.java b/testng-core/src/test/java/test/github765/DuplicateCallsSample.java index f7bf241221..7e8120780e 100644 --- a/testng-core/src/test/java/test/github765/DuplicateCallsSample.java +++ b/testng-core/src/test/java/test/github765/DuplicateCallsSample.java @@ -7,6 +7,7 @@ public class DuplicateCallsSample extends TestTemplate { + @Override @Test(dataProvider = "testParameters") public void callExecuteTest(Integer testParameters) { assertThat(testParameters > 0).isTrue(); diff --git a/testng-core/src/test/java/test/guice/issue2343/SampleA.java b/testng-core/src/test/java/test/guice/issue2343/SampleA.java index 025fa61153..db13225c92 100644 --- a/testng-core/src/test/java/test/guice/issue2343/SampleA.java +++ b/testng-core/src/test/java/test/guice/issue2343/SampleA.java @@ -7,7 +7,9 @@ @Guice public class SampleA { + // Guice must be able to inject this; nothing needs to read it. @Inject + @SuppressWarnings("unused") public SampleA(final Person person) {} @Test diff --git a/testng-core/src/test/java/test/guice/issue2343/SampleB.java b/testng-core/src/test/java/test/guice/issue2343/SampleB.java index ebf7258f8b..9cc38366ad 100644 --- a/testng-core/src/test/java/test/guice/issue2343/SampleB.java +++ b/testng-core/src/test/java/test/guice/issue2343/SampleB.java @@ -7,7 +7,9 @@ @Guice public class SampleB { + // Guice must be able to inject this; nothing needs to read it. @Inject + @SuppressWarnings("unused") public SampleB(final Person person) {} @Test diff --git a/testng-core/src/test/java/test/guice/issue2427/Test1.java b/testng-core/src/test/java/test/guice/issue2427/Test1.java index 105ba1ddb2..a4301895a8 100644 --- a/testng-core/src/test/java/test/guice/issue2427/Test1.java +++ b/testng-core/src/test/java/test/guice/issue2427/Test1.java @@ -5,7 +5,7 @@ import test.guice.issue2427.modules.TestModuleOne; @Guice(modules = {TestModuleOne.class}) -@Test() +@Test public class Test1 { public void shouldInstatiateModulesOnlyOnce() { // do nothing as test is about configuration part diff --git a/testng-core/src/test/java/test/guice/issue2427/Test2.java b/testng-core/src/test/java/test/guice/issue2427/Test2.java index b5ecff4f3b..d80c5b1a50 100644 --- a/testng-core/src/test/java/test/guice/issue2427/Test2.java +++ b/testng-core/src/test/java/test/guice/issue2427/Test2.java @@ -5,7 +5,7 @@ import test.guice.issue2427.modules.TestModuleTwo; @Guice(modules = {TestModuleTwo.class}) -@Test() +@Test public class Test2 { public void shouldInstatiateModulesOnlyOnce() { // do nothing as test is about configuration part diff --git a/testng-core/src/test/java/test/invocationcount/DataProviderFalseFalseTest.java b/testng-core/src/test/java/test/invocationcount/DataProviderFalseFalseTest.java index 9e726f8a4d..1207d12ded 100644 --- a/testng-core/src/test/java/test/invocationcount/DataProviderFalseFalseTest.java +++ b/testng-core/src/test/java/test/invocationcount/DataProviderFalseFalseTest.java @@ -4,9 +4,9 @@ import org.testng.annotations.BeforeMethod; public class DataProviderFalseFalseTest extends DataProviderBase { - @BeforeMethod() + @BeforeMethod public void beforeMethod() {} - @AfterMethod() + @AfterMethod public void afterMethod() {} } diff --git a/testng-core/src/test/java/test/invocationcount/DataProviderFalseTrueTest.java b/testng-core/src/test/java/test/invocationcount/DataProviderFalseTrueTest.java index a0b04726da..d4a51ab5dc 100644 --- a/testng-core/src/test/java/test/invocationcount/DataProviderFalseTrueTest.java +++ b/testng-core/src/test/java/test/invocationcount/DataProviderFalseTrueTest.java @@ -4,7 +4,7 @@ import org.testng.annotations.BeforeMethod; public class DataProviderFalseTrueTest extends DataProviderBase { - @BeforeMethod() + @BeforeMethod public void beforeMethod() {} @AfterMethod(lastTimeOnly = true) diff --git a/testng-core/src/test/java/test/invocationcount/DataProviderTrueFalseTest.java b/testng-core/src/test/java/test/invocationcount/DataProviderTrueFalseTest.java index 04bbbd5a67..8ec7307a44 100644 --- a/testng-core/src/test/java/test/invocationcount/DataProviderTrueFalseTest.java +++ b/testng-core/src/test/java/test/invocationcount/DataProviderTrueFalseTest.java @@ -7,6 +7,6 @@ public class DataProviderTrueFalseTest extends DataProviderBase { @BeforeMethod(firstTimeOnly = true) public void beforeMethod() {} - @AfterMethod() + @AfterMethod public void afterMethod() {} } diff --git a/testng-core/src/test/java/test/invocationcount/InvocationCountFalseFalseTest.java b/testng-core/src/test/java/test/invocationcount/InvocationCountFalseFalseTest.java index f058389be5..b4f98074a7 100644 --- a/testng-core/src/test/java/test/invocationcount/InvocationCountFalseFalseTest.java +++ b/testng-core/src/test/java/test/invocationcount/InvocationCountFalseFalseTest.java @@ -4,9 +4,9 @@ import org.testng.annotations.BeforeMethod; public class InvocationCountFalseFalseTest extends InvocationBase { - @BeforeMethod() + @BeforeMethod public void beforeMethod() {} - @AfterMethod() + @AfterMethod public void afterMethod() {} } diff --git a/testng-core/src/test/java/test/invocationcount/InvocationCountFalseTrueTest.java b/testng-core/src/test/java/test/invocationcount/InvocationCountFalseTrueTest.java index bad7376df5..3f07ad2321 100644 --- a/testng-core/src/test/java/test/invocationcount/InvocationCountFalseTrueTest.java +++ b/testng-core/src/test/java/test/invocationcount/InvocationCountFalseTrueTest.java @@ -4,7 +4,7 @@ import org.testng.annotations.BeforeMethod; public class InvocationCountFalseTrueTest extends InvocationBase { - @BeforeMethod() + @BeforeMethod public void beforeMethod() {} @AfterMethod(lastTimeOnly = true) diff --git a/testng-core/src/test/java/test/invocationcount/InvocationCountTrueFalseTest.java b/testng-core/src/test/java/test/invocationcount/InvocationCountTrueFalseTest.java index 2ec381647d..72ffe81c0f 100644 --- a/testng-core/src/test/java/test/invocationcount/InvocationCountTrueFalseTest.java +++ b/testng-core/src/test/java/test/invocationcount/InvocationCountTrueFalseTest.java @@ -7,6 +7,6 @@ public class InvocationCountTrueFalseTest extends InvocationBase { @BeforeMethod(firstTimeOnly = true) public void beforeMethod() {} - @AfterMethod() + @AfterMethod public void afterMethod() {} } diff --git a/testng-core/src/test/java/test/invocationcount/issue1719/DummyReporter.java b/testng-core/src/test/java/test/invocationcount/issue1719/DummyReporter.java index 179724c59a..a282746268 100644 --- a/testng-core/src/test/java/test/invocationcount/issue1719/DummyReporter.java +++ b/testng-core/src/test/java/test/invocationcount/issue1719/DummyReporter.java @@ -14,6 +14,7 @@ public class DummyReporter implements IReporter { private final Set success = new HashSet<>(); private final Set failedWithinSuccessPercentage = new HashSet<>(); + @Override public void generateReport( List xmlSuites, List suites, String outputDirectory) { suites.forEach( diff --git a/testng-core/src/test/java/test/invocationcount/issue3180/RetryAnalyzer.java b/testng-core/src/test/java/test/invocationcount/issue3180/RetryAnalyzer.java index 8feedd5e64..8e0debf264 100644 --- a/testng-core/src/test/java/test/invocationcount/issue3180/RetryAnalyzer.java +++ b/testng-core/src/test/java/test/invocationcount/issue3180/RetryAnalyzer.java @@ -11,6 +11,7 @@ public class RetryAnalyzer implements IRetryAnalyzer { /* * Retry method */ + @Override public boolean retry(ITestResult result) { return counter++ < retryLimit; } diff --git a/testng-core/src/test/java/test/invokedmethodlistener/A.java b/testng-core/src/test/java/test/invokedmethodlistener/A.java index de35280c51..103184f845 100644 --- a/testng-core/src/test/java/test/invokedmethodlistener/A.java +++ b/testng-core/src/test/java/test/invokedmethodlistener/A.java @@ -4,6 +4,6 @@ public class A { - @BeforeSuite() + @BeforeSuite public static void someMethod1() {} } diff --git a/testng-core/src/test/java/test/issue107/MySuiteListener.java b/testng-core/src/test/java/test/issue107/MySuiteListener.java index 85781b3ba5..06793766fc 100644 --- a/testng-core/src/test/java/test/issue107/MySuiteListener.java +++ b/testng-core/src/test/java/test/issue107/MySuiteListener.java @@ -6,6 +6,7 @@ import org.testng.xml.XmlSuite; public class MySuiteListener implements ISuiteListener { + @Override public void onStart(ISuite suite) { final XmlSuite xmlSuite = suite.getXmlSuite(); final Map parameters = xmlSuite.getParameters(); diff --git a/testng-core/src/test/java/test/junitreports/LocalJUnitReportReporter.java b/testng-core/src/test/java/test/junitreports/LocalJUnitReportReporter.java index 672a33e062..1a219aedd1 100644 --- a/testng-core/src/test/java/test/junitreports/LocalJUnitReportReporter.java +++ b/testng-core/src/test/java/test/junitreports/LocalJUnitReportReporter.java @@ -20,6 +20,7 @@ public void generateReport( testsuites.addAll(LocalJUnitXMLReporter.getSuites(files)); } + @Override public Testsuite getTestsuite(String name) { for (Testsuite suite : testsuites) { if (suite.getName().equals(name)) { diff --git a/testng-core/src/test/java/test/junitreports/LocalJUnitXMLReporter.java b/testng-core/src/test/java/test/junitreports/LocalJUnitXMLReporter.java index 695ba8cdc1..039db1f330 100644 --- a/testng-core/src/test/java/test/junitreports/LocalJUnitXMLReporter.java +++ b/testng-core/src/test/java/test/junitreports/LocalJUnitXMLReporter.java @@ -11,6 +11,7 @@ public class LocalJUnitXMLReporter extends JUnitXMLReporter implements TestsuiteRetriever { private final List testsuites = new ArrayList<>(); + @Override protected void generateReport(ITestContext context) { super.generateReport(context); String dir = context.getOutputDirectory(); @@ -19,6 +20,7 @@ protected void generateReport(ITestContext context) { testsuites.addAll(getSuites(files)); } + @Override public Testsuite getTestsuite(String name) { for (Testsuite suite : testsuites) { if (suite.getName().equals(name)) { diff --git a/testng-core/src/test/java/test/listeners/AlterSuiteListenerTest.java b/testng-core/src/test/java/test/listeners/AlterSuiteListenerTest.java index 59df8a91fb..33afbed72f 100644 --- a/testng-core/src/test/java/test/listeners/AlterSuiteListenerTest.java +++ b/testng-core/src/test/java/test/listeners/AlterSuiteListenerTest.java @@ -1,6 +1,5 @@ package test.listeners; -import static java.lang.String.valueOf; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; @@ -63,7 +62,7 @@ public void executionListenerWithXml3() { List tests = xmlSuite.getTests(); int i = 1; for (XmlTest xmlTest : tests) { - assertThat(xmlTest.getParameter("param")).isEqualTo(valueOf(i)); + assertThat(xmlTest.getParameter("param")).isEqualTo(String.valueOf(i)); i++; } } diff --git a/testng-core/src/test/java/test/listeners/ResultContextListener.java b/testng-core/src/test/java/test/listeners/ResultContextListener.java index 8580ea5b85..8477c789e6 100644 --- a/testng-core/src/test/java/test/listeners/ResultContextListener.java +++ b/testng-core/src/test/java/test/listeners/ResultContextListener.java @@ -8,6 +8,7 @@ public class ResultContextListener implements ITestListener { public static boolean contextProvided = false; + @Override public void onTestStart(ITestResult result) { ITestContext context = result.getTestContext(); if (context != null) { diff --git a/testng-core/src/test/java/test/listeners/github1130/MyListener.java b/testng-core/src/test/java/test/listeners/github1130/MyListener.java index b3308f48f4..7de051da0c 100644 --- a/testng-core/src/test/java/test/listeners/github1130/MyListener.java +++ b/testng-core/src/test/java/test/listeners/github1130/MyListener.java @@ -19,10 +19,12 @@ public MyListener() { } } + @Override public void onStart(ISuite suite) { beforeSuiteCount.add(this.toString()); } + @Override public void onBeforeClass(ITestClass testClass) { beforeClassCount.add(this.toString()); } diff --git a/testng-core/src/test/java/test/listeners/github1284/Listener1284.java b/testng-core/src/test/java/test/listeners/github1284/Listener1284.java index f4a6514ef5..dd61ad1140 100644 --- a/testng-core/src/test/java/test/listeners/github1284/Listener1284.java +++ b/testng-core/src/test/java/test/listeners/github1284/Listener1284.java @@ -21,10 +21,12 @@ public static Listener1284 getInstance() { return instance; } + @Override public void onBeforeClass(ITestClass iTestClass) { Listener1284.testList.add(iTestClass.getRealClass().getName() + " - Before Invocation"); } + @Override public void onAfterClass(ITestClass iTestClass) { Listener1284.testList.add(iTestClass.getRealClass().getName() + " - After Invocation"); } diff --git a/testng-core/src/test/java/test/listeners/github1319/TestSample.java b/testng-core/src/test/java/test/listeners/github1319/TestSample.java index a47d690c2d..456a339adb 100644 --- a/testng-core/src/test/java/test/listeners/github1319/TestSample.java +++ b/testng-core/src/test/java/test/listeners/github1319/TestSample.java @@ -54,14 +54,17 @@ public void afterSuite() { public static class Listener implements IConfigurationListener, ITestListener { public static Map maps = Maps.newConcurrentMap(); + @Override public void onConfigurationSuccess(ITestResult itr) { maps.put(itr.getMethod().getMethodName(), itr.getInstance()); } + @Override public void onConfigurationFailure(ITestResult itr) { maps.put(itr.getMethod().getMethodName(), itr.getInstance()); } + @Override public void onConfigurationSkip(ITestResult itr) { maps.put(itr.getMethod().getMethodName(), itr.getInstance()); } diff --git a/testng-core/src/test/java/test/listeners/github1393/Listener1393.java b/testng-core/src/test/java/test/listeners/github1393/Listener1393.java index ac7d7b7200..49d3743e83 100644 --- a/testng-core/src/test/java/test/listeners/github1393/Listener1393.java +++ b/testng-core/src/test/java/test/listeners/github1393/Listener1393.java @@ -5,6 +5,7 @@ public class Listener1393 extends TestListenerAdapter { + @Override public void onTestStart(ITestResult testContext) { super.onTestStart(testContext); System.out.println("In onTestStart"); diff --git a/testng-core/src/test/java/test/listeners/github2522/SkipTestSample.java b/testng-core/src/test/java/test/listeners/github2522/SkipTestSample.java index fab833cac5..797cc70ffb 100644 --- a/testng-core/src/test/java/test/listeners/github2522/SkipTestSample.java +++ b/testng-core/src/test/java/test/listeners/github2522/SkipTestSample.java @@ -5,12 +5,12 @@ public class SkipTestSample { private static boolean flag = true; - @Test() + @Test public void oneTest() { flag = false; } - @Test() + @Test public void twoTest() {} public static boolean getFlag() { diff --git a/testng-core/src/test/java/test/listeners/issue3238/BadUtility.java b/testng-core/src/test/java/test/listeners/issue3238/BadUtility.java index 1da5b6d878..349a8de4ec 100644 --- a/testng-core/src/test/java/test/listeners/issue3238/BadUtility.java +++ b/testng-core/src/test/java/test/listeners/issue3238/BadUtility.java @@ -2,6 +2,9 @@ public class BadUtility { + // Never read on purpose: evaluating it is what makes class initialisation fail, which is + // the condition issue3238 is about. + @SuppressWarnings("unused") private static final int counter = evaluate(); private static int evaluate() { diff --git a/testng-core/src/test/java/test/listeners/ordering/ListenerInvocationDefaultBehaviorTest.java b/testng-core/src/test/java/test/listeners/ordering/ListenerInvocationDefaultBehaviorTest.java index 4fe7225b61..d391af0554 100644 --- a/testng-core/src/test/java/test/listeners/ordering/ListenerInvocationDefaultBehaviorTest.java +++ b/testng-core/src/test/java/test/listeners/ordering/ListenerInvocationDefaultBehaviorTest.java @@ -625,10 +625,10 @@ public void testOrderForSymmetricOnAfterClass() { IEXECUTIONLISTENER_ON_EXECUTION_FINISH); try { - System.setProperty(RuntimeBehavior.SYMMETRIC_LISTENER_EXECUTION, Boolean.TRUE.toString()); + System.setProperty(RuntimeBehavior.SYMMETRIC_LISTENER_EXECUTION, "true"); runTest(symmetricExpected, SimpleTestClassWithBeforeAndAfterClass.class); } finally { - System.setProperty(RuntimeBehavior.SYMMETRIC_LISTENER_EXECUTION, Boolean.FALSE.toString()); + System.setProperty(RuntimeBehavior.SYMMETRIC_LISTENER_EXECUTION, "false"); } } diff --git a/testng-core/src/test/java/test/listeners/ordering/UniversalListener.java b/testng-core/src/test/java/test/listeners/ordering/UniversalListener.java index fa51fd2b34..c85d1ea1d7 100644 --- a/testng-core/src/test/java/test/listeners/ordering/UniversalListener.java +++ b/testng-core/src/test/java/test/listeners/ordering/UniversalListener.java @@ -51,18 +51,22 @@ public List getMessages() { return messages; } + @Override public void onConfigurationSuccess(ITestResult itr) { messages.add("org.testng.IConfigurationListener.onConfigurationSuccess(ITestResult itr)"); } + @Override public void onConfigurationFailure(ITestResult itr) { messages.add("org.testng.IConfigurationListener.onConfigurationFailure(ITestResult itr)"); } + @Override public void onConfigurationSkip(ITestResult itr) { messages.add("org.testng.IConfigurationListener.onConfigurationSkip(ITestResult itr)"); } + @Override public void beforeConfiguration(ITestResult tr) { messages.add("org.testng.IConfigurationListener.beforeConfiguration(ITestResult tr)"); } diff --git a/testng-core/src/test/java/test/methodinterceptors/LockUpInterceptorSampleTest.java b/testng-core/src/test/java/test/methodinterceptors/LockUpInterceptorSampleTest.java index ec07acd52b..f2c8f8aeaf 100644 --- a/testng-core/src/test/java/test/methodinterceptors/LockUpInterceptorSampleTest.java +++ b/testng-core/src/test/java/test/methodinterceptors/LockUpInterceptorSampleTest.java @@ -7,21 +7,11 @@ public class LockUpInterceptorSampleTest { @Test - public void one() { - log("one"); - } + public void one() {} @Test - public void two() { - log("two"); - } + public void two() {} @Test - public void three() { - log("three"); - } - - private static void log(String s) { - // System.out.println("[MITest] " + s); - } + public void three() {} } diff --git a/testng-core/src/test/java/test/methodinterceptors/issue1726/PriorityInterceptor.java b/testng-core/src/test/java/test/methodinterceptors/issue1726/PriorityInterceptor.java index 964ecda35d..ee496eb38d 100644 --- a/testng-core/src/test/java/test/methodinterceptors/issue1726/PriorityInterceptor.java +++ b/testng-core/src/test/java/test/methodinterceptors/issue1726/PriorityInterceptor.java @@ -9,6 +9,7 @@ public class PriorityInterceptor implements IMethodInterceptor { + @Override public List intercept(List methods, ITestContext context) { Comparator comparator = Comparator.comparingInt(PriorityInterceptor::getPriority); diff --git a/testng-core/src/test/java/test/methodselectors/ScriptNegativeTest.java b/testng-core/src/test/java/test/methodselectors/ScriptNegativeTest.java index afc4de2ea5..dad030b298 100644 --- a/testng-core/src/test/java/test/methodselectors/ScriptNegativeTest.java +++ b/testng-core/src/test/java/test/methodselectors/ScriptNegativeTest.java @@ -18,12 +18,12 @@ public class ScriptNegativeTest extends SimpleBaseTest { @BeforeMethod public void setup() { - System.setProperty("skip.caller.clsLoader", Boolean.TRUE.toString()); + System.setProperty("skip.caller.clsLoader", "true"); } @AfterMethod public void cleanup() { - System.setProperty("skip.caller.clsLoader", Boolean.FALSE.toString()); + System.setProperty("skip.caller.clsLoader", "false"); } @Test( diff --git a/testng-core/src/test/java/test/name/github1046/TestClassSample.java b/testng-core/src/test/java/test/name/github1046/TestClassSample.java index 1d96a9b01b..0cd40eabab 100644 --- a/testng-core/src/test/java/test/name/github1046/TestClassSample.java +++ b/testng-core/src/test/java/test/name/github1046/TestClassSample.java @@ -33,7 +33,7 @@ public void dontChangeName() {} @Override public void run(IHookCallBack callBack, ITestResult testResult) { - if (!("dontChangeName".equals(testResult.getMethod().getMethodName()))) { + if (!"dontChangeName".equals(testResult.getMethod().getMethodName())) { Object param = "999"; Object[] parameters = callBack.getParameters(); if (parameters.length != 0) { diff --git a/testng-core/src/test/java/test/nested/GarfTest.java b/testng-core/src/test/java/test/nested/GarfTest.java index 70ffbb3ad2..f912f16d4a 100644 --- a/testng-core/src/test/java/test/nested/GarfTest.java +++ b/testng-core/src/test/java/test/nested/GarfTest.java @@ -8,7 +8,7 @@ @Test(groups = {"unittest"}) public class GarfTest { - @Test() + @Test public void testGarf() { AccountTypeEnum foo = AccountTypeEnum.ClearingMember; assertThat(foo).isEqualTo(AccountTypeEnum.ClearingMember); diff --git a/testng-core/src/test/java/test/objectfactory/ClassObjectFactory.java b/testng-core/src/test/java/test/objectfactory/ClassObjectFactory.java index 9a89352de7..23a8120a82 100644 --- a/testng-core/src/test/java/test/objectfactory/ClassObjectFactory.java +++ b/testng-core/src/test/java/test/objectfactory/ClassObjectFactory.java @@ -6,6 +6,7 @@ public class ClassObjectFactory implements ITestObjectFactory { + @Override public T newInstance(Constructor constructor, Object... parameters) { T object = InstanceCreator.newInstance(constructor, parameters); if (object instanceof ISetValue) { diff --git a/testng-core/src/test/java/test/parameters/Issue1554TestClassSample.java b/testng-core/src/test/java/test/parameters/Issue1554TestClassSample.java index 4bcba30588..9f91727bfb 100644 --- a/testng-core/src/test/java/test/parameters/Issue1554TestClassSample.java +++ b/testng-core/src/test/java/test/parameters/Issue1554TestClassSample.java @@ -18,7 +18,7 @@ public void setUpTest(String browser, ITestContext context) { this.context = context; } - @Test() + @Test public void aTest() { assertThat(browser).isNotNull(); assertThat(context).isNotNull(); diff --git a/testng-core/src/test/java/test/parameters/ParameterOverrideTest.java b/testng-core/src/test/java/test/parameters/ParameterOverrideTest.java index 133834b588..7603237218 100644 --- a/testng-core/src/test/java/test/parameters/ParameterOverrideTest.java +++ b/testng-core/src/test/java/test/parameters/ParameterOverrideTest.java @@ -43,7 +43,7 @@ public void testOverrideParameter(String name, Status status) { clazz.getLocalParameters().put("InheritedFromClass", "InheritedFromClass"); XmlInclude includeF = createXmlInclude(clazz, "f"); - XmlInclude includeG = createXmlInclude(clazz, "g"); + createXmlInclude(clazz, "g"); switch (status) { case PASS_TEST: diff --git a/testng-core/src/test/java/test/parameters/ShadowTest.java b/testng-core/src/test/java/test/parameters/ShadowTest.java index 21dac7510a..3b6e7fa9fd 100644 --- a/testng-core/src/test/java/test/parameters/ShadowTest.java +++ b/testng-core/src/test/java/test/parameters/ShadowTest.java @@ -6,7 +6,6 @@ import org.testng.TestNG; import org.testng.annotations.Test; import org.testng.xml.XmlClass; -import org.testng.xml.XmlInclude; import org.testng.xml.XmlSuite; import org.testng.xml.XmlTest; import test.InvokedMethodNameListener; @@ -21,11 +20,11 @@ public void parametersShouldNotBeShadowed() { XmlClass class1 = createXmlClass(test, Shadow1Sample.class); class1.getLocalParameters().put("a", "First"); - XmlInclude include1 = createXmlInclude(class1, "test1"); + createXmlInclude(class1, "test1"); XmlClass class2 = createXmlClass(test, Shadow2Sample.class); class2.getLocalParameters().put("a", "Second"); - XmlInclude include2 = createXmlInclude(class2, "test2"); + createXmlInclude(class2, "test2"); TestNG tng = create(suite); diff --git a/testng-core/src/test/java/test/pkg2/Test2.java b/testng-core/src/test/java/test/pkg2/Test2.java index 55248f431b..2d1fd9e1d1 100644 --- a/testng-core/src/test/java/test/pkg2/Test2.java +++ b/testng-core/src/test/java/test/pkg2/Test2.java @@ -3,6 +3,11 @@ import test.pkg.PackageTest; public class Test2 { + // Never called, and the parameter is never read -- both on purpose, so both checks are named + // rather than left to the "unused" alias. PackageTest asserts this constructor does not run: it + // is how the test detects TestNG instantiating a class that holds no test methods. Dropping the + // parameter would turn it into a no-arg constructor and change what that assertion is exposed to. + @SuppressWarnings({"UnusedVariable", "UnusedMethod"}) private Test2(float afloat) { PackageTest.NON_TEST_CONSTRUCTOR = true; } diff --git a/testng-core/src/test/java/test/preserveorder/PreserveOrderTest.java b/testng-core/src/test/java/test/preserveorder/PreserveOrderTest.java index bb5c13b60e..a96a7af5bb 100644 --- a/testng-core/src/test/java/test/preserveorder/PreserveOrderTest.java +++ b/testng-core/src/test/java/test/preserveorder/PreserveOrderTest.java @@ -4,6 +4,7 @@ import java.util.Iterator; import java.util.List; +import java.util.Locale; import org.testng.ITestNGListener; import org.testng.TestNG; import org.testng.annotations.DataProvider; @@ -43,9 +44,10 @@ public void preserveClassOrder(Class[] tests) { assertThat(listener.getInvokedMethodNames()).hasSize(9); Iterator methods = listener.getInvokedMethodNames().iterator(); for (Class testClass : tests) { + String prefix = testClass.getSimpleName().toLowerCase(Locale.ROOT); for (int i = 1; i <= 3; i++) { String methodName = methods.next(); - assertThat(methodName).isEqualTo(testClass.getSimpleName().toLowerCase() + i); + assertThat(methodName).isEqualTo(prefix + i); } } } diff --git a/testng-core/src/test/java/test/priority/parallel/EfficientPriorityParallelizationTest.java b/testng-core/src/test/java/test/priority/parallel/EfficientPriorityParallelizationTest.java index cb33de33a1..9e735db6e6 100644 --- a/testng-core/src/test/java/test/priority/parallel/EfficientPriorityParallelizationTest.java +++ b/testng-core/src/test/java/test/priority/parallel/EfficientPriorityParallelizationTest.java @@ -6,10 +6,7 @@ import static test.thread.parallelization.TestNgRunStateTracker.getAllSuiteListenerStartEventLogs; import static test.thread.parallelization.TestNgRunStateTracker.getAllTestLevelEventLogs; import static test.thread.parallelization.TestNgRunStateTracker.getAllTestMethodLevelEventLogs; -import static test.thread.parallelization.TestNgRunStateTracker.getSuiteAndTestLevelEventLogsForSuite; import static test.thread.parallelization.TestNgRunStateTracker.getSuiteLevelEventLogsForSuite; -import static test.thread.parallelization.TestNgRunStateTracker.getSuiteListenerFinishEventLog; -import static test.thread.parallelization.TestNgRunStateTracker.getSuiteListenerStartEventLog; import static test.thread.parallelization.TestNgRunStateTracker.getTestLevelEventLogsForSuite; import static test.thread.parallelization.TestNgRunStateTracker.getTestLevelEventLogsForTest; import static test.thread.parallelization.TestNgRunStateTracker.getTestListenerFinishEventLog; @@ -46,7 +43,6 @@ public class EfficientPriorityParallelizationTest extends BaseParallelizationTes private List testLevelEventLogs; private List testMethodLevelEventLogs; - private List suiteOneSuiteAndTestLevelEventLogs; private List suiteOneSuiteLevelEventLogs; private List suiteOneTestLevelEventLogs; private List suiteOneTestMethodLevelEventLogs; @@ -54,9 +50,6 @@ public class EfficientPriorityParallelizationTest extends BaseParallelizationTes private List suiteOneTestOneTestMethodLevelEventLogs; private List suiteOneTestTwoTestMethodLevelEventLogs; - private EventLog suiteOneSuiteListenerOnStartEventLog; - private EventLog suiteOneSuiteListenerOnFinishEventLog; - private EventLog suiteOneTestOneListenerOnStartEventLog; private EventLog suiteOneTestOneListenerOnFinishEventLog; @@ -120,7 +113,6 @@ public void setUp() { testLevelEventLogs = getAllTestLevelEventLogs(); testMethodLevelEventLogs = getAllTestMethodLevelEventLogs(); - suiteOneSuiteAndTestLevelEventLogs = getSuiteAndTestLevelEventLogsForSuite(SUITE_A); suiteOneSuiteLevelEventLogs = getSuiteLevelEventLogsForSuite(SUITE_A); suiteOneTestLevelEventLogs = getTestLevelEventLogsForSuite(SUITE_A); @@ -134,9 +126,6 @@ public void setUp() { testEventLogsMap.put(SUITE_A_TEST_A, getTestLevelEventLogsForTest(SUITE_A, SUITE_A_TEST_A)); testEventLogsMap.put(SUITE_A_TEST_B, getTestLevelEventLogsForTest(SUITE_A, SUITE_A_TEST_B)); - suiteOneSuiteListenerOnStartEventLog = getSuiteListenerStartEventLog(SUITE_A); - suiteOneSuiteListenerOnFinishEventLog = getSuiteListenerFinishEventLog(SUITE_A); - suiteOneTestOneListenerOnStartEventLog = getTestListenerStartEventLog(SUITE_A, SUITE_A_TEST_A); suiteOneTestOneListenerOnFinishEventLog = getTestListenerFinishEventLog(SUITE_A, SUITE_A_TEST_A); diff --git a/testng-core/src/test/java/test/regression/MyTestngTest.java b/testng-core/src/test/java/test/regression/MyTestngTest.java index 969df01231..6768996425 100644 --- a/testng-core/src/test/java/test/regression/MyTestngTest.java +++ b/testng-core/src/test/java/test/regression/MyTestngTest.java @@ -6,10 +6,10 @@ public class MyTestngTest { - @BeforeSuite() + @BeforeSuite public void beforeSuite(ITestContext tc) throws Exception {} - @BeforeTest() + @BeforeTest public void beforeTest(ITestContext tc) throws Exception { throw new RuntimeException("barfing now"); } diff --git a/testng-core/src/test/java/test/regression/MyTestngTest2.java b/testng-core/src/test/java/test/regression/MyTestngTest2.java index a2765ab43f..fe1717ab2d 100644 --- a/testng-core/src/test/java/test/regression/MyTestngTest2.java +++ b/testng-core/src/test/java/test/regression/MyTestngTest2.java @@ -7,14 +7,14 @@ public class MyTestngTest2 extends MyTestngTest { - @BeforeClass() + @BeforeClass public void beforeClass(ITestContext tc) throws Exception {} - @BeforeMethod() + @BeforeMethod public void beforeMethod(ITestContext tc) throws Exception { // throw new Exception("fail me"); } - @Test() + @Test public void test(ITestContext tc) {} } diff --git a/testng-core/src/test/java/test/reports/EmailableReporterTest.java b/testng-core/src/test/java/test/reports/EmailableReporterTest.java index 2f55ee50a4..f3b3857f7d 100644 --- a/testng-core/src/test/java/test/reports/EmailableReporterTest.java +++ b/testng-core/src/test/java/test/reports/EmailableReporterTest.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.lang.reflect.Method; import java.nio.file.Files; +import java.util.Locale; import org.testng.IReporter; import org.testng.ITestNGListener; import org.testng.TestNG; @@ -76,7 +77,7 @@ private static void runTest(Class... classes) { @DataProvider(name = "getReporterInstances") public Object[][] getReporterInstances(Method method) { - if (method.getName().toLowerCase().contains("jvmarguments")) { + if (method.getName().toLowerCase(Locale.ROOT).contains("jvmarguments")) { return new Object[][] {{new EmailableReporter2(), "emailable.report2.name"}}; } return new Object[][] {{new EmailableReporter2()}}; diff --git a/testng-core/src/test/java/test/reports/issue1756/CustomTestNGReporter.java b/testng-core/src/test/java/test/reports/issue1756/CustomTestNGReporter.java index 47cfcb01f9..bd50f7da7d 100644 --- a/testng-core/src/test/java/test/reports/issue1756/CustomTestNGReporter.java +++ b/testng-core/src/test/java/test/reports/issue1756/CustomTestNGReporter.java @@ -15,6 +15,7 @@ public List getLogs() { return logs; } + @Override public void generateReport( List xmlSuites, List suites, String outputDirectory) { getTestMehodSummary(suites); diff --git a/testng-core/src/test/java/test/reports/issue1756/SampleTestClass.java b/testng-core/src/test/java/test/reports/issue1756/SampleTestClass.java index dc0970c231..030a439434 100644 --- a/testng-core/src/test/java/test/reports/issue1756/SampleTestClass.java +++ b/testng-core/src/test/java/test/reports/issue1756/SampleTestClass.java @@ -27,6 +27,7 @@ public void test1() { @Test(dependsOnMethods = "test1") public void test2() {} + @Override public String getTestName() { return uri; } diff --git a/testng-core/src/test/java/test/retryAnalyzer/TestResultPruner.java b/testng-core/src/test/java/test/retryAnalyzer/TestResultPruner.java index 7ff549e72d..0401ccb90e 100644 --- a/testng-core/src/test/java/test/retryAnalyzer/TestResultPruner.java +++ b/testng-core/src/test/java/test/retryAnalyzer/TestResultPruner.java @@ -19,7 +19,7 @@ public void onFinish(ITestContext context) { if (!passed.isEmpty() && !skipped.isEmpty()) { context.getSkippedTests().removeResult(method); } - if (((!failedWithinSuccess.isEmpty()) || (!failed.isEmpty())) && !skipped.isEmpty()) { + if ((!failedWithinSuccess.isEmpty() || !failed.isEmpty()) && !skipped.isEmpty()) { context.getSkippedTests().removeResult(method); } } diff --git a/testng-core/src/test/java/test/retryAnalyzer/issue1946/RetryAnalyzer.java b/testng-core/src/test/java/test/retryAnalyzer/issue1946/RetryAnalyzer.java index 24182d71ee..9e79dac4a9 100644 --- a/testng-core/src/test/java/test/retryAnalyzer/issue1946/RetryAnalyzer.java +++ b/testng-core/src/test/java/test/retryAnalyzer/issue1946/RetryAnalyzer.java @@ -13,6 +13,7 @@ public class RetryAnalyzer implements IRetryAnalyzer { private int retryCount = 0; private static final int MAX_RETRY_COUNT = 1; + @Override public boolean retry(ITestResult result) { String prefix = "Attempt #" + retryCount; if (retryCount < MAX_RETRY_COUNT) { diff --git a/testng-core/src/test/java/test/sanitycheck/SampleTest1.java b/testng-core/src/test/java/test/sanitycheck/SampleTest1.java index 0b7cfeb844..ef8097bd24 100644 --- a/testng-core/src/test/java/test/sanitycheck/SampleTest1.java +++ b/testng-core/src/test/java/test/sanitycheck/SampleTest1.java @@ -3,6 +3,6 @@ import org.testng.annotations.Test; public class SampleTest1 { - @Test() + @Test public void test1() {} } diff --git a/testng-core/src/test/java/test/sanitycheck/SampleTest2.java b/testng-core/src/test/java/test/sanitycheck/SampleTest2.java index 03c23633c4..c895accdc7 100644 --- a/testng-core/src/test/java/test/sanitycheck/SampleTest2.java +++ b/testng-core/src/test/java/test/sanitycheck/SampleTest2.java @@ -3,6 +3,6 @@ import org.testng.annotations.Test; public class SampleTest2 { - @Test() + @Test public void test2() {} } diff --git a/testng-core/src/test/java/test/sanitycheck/SampleTest3.java b/testng-core/src/test/java/test/sanitycheck/SampleTest3.java index b9655d4d7b..ac614e18ac 100644 --- a/testng-core/src/test/java/test/sanitycheck/SampleTest3.java +++ b/testng-core/src/test/java/test/sanitycheck/SampleTest3.java @@ -3,6 +3,6 @@ import org.testng.annotations.Test; public class SampleTest3 { - @Test() + @Test public void test3() {} } diff --git a/testng-core/src/test/java/test/testng674/ReportingListenerFor674.java b/testng-core/src/test/java/test/testng674/ReportingListenerFor674.java index 9956a16d04..9fb21d5c53 100644 --- a/testng-core/src/test/java/test/testng674/ReportingListenerFor674.java +++ b/testng-core/src/test/java/test/testng674/ReportingListenerFor674.java @@ -13,6 +13,7 @@ public class ReportingListenerFor674 implements IReporter { private List errors = new ArrayList<>(); + @Override public void generateReport(List list, List suites, String s) { for (ISuite suite : suites) { for (ISuiteResult suiteResult : suite.getResults().values()) { diff --git a/testng-core/src/test/java/test/thread/parallelization/BaseParallelizationTest.java b/testng-core/src/test/java/test/thread/parallelization/BaseParallelizationTest.java index 0a647854f5..ca5acde54a 100644 --- a/testng-core/src/test/java/test/thread/parallelization/BaseParallelizationTest.java +++ b/testng-core/src/test/java/test/thread/parallelization/BaseParallelizationTest.java @@ -857,7 +857,7 @@ public static void verifySequentialSuites( + "pairs of a suite listener onStart event logger followed by a suite listener onFinish event logger: " + suiteLevelEventLogs) .isTrue(); - suiteListenerStartEventLogs.add((suiteLevelEventLogs.get(i))); + suiteListenerStartEventLogs.add(suiteLevelEventLogs.get(i)); } for (int i = 0; i < suiteListenerStartEventLogs.size() - 1; i++) { diff --git a/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateListener.java b/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateListener.java index 04327e6fc9..bdc4ecd21b 100644 --- a/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateListener.java +++ b/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateListener.java @@ -102,7 +102,7 @@ private TestNgRunStateTracker.EventLogBuilder buildEventLog( private TestNgRunStateTracker.EventLogBuilder buildEventLog( ITestResult result, TestNgRunEvent event) { - return (buildEventLog(result.getTestContext(), event)) + return buildEventLog(result.getTestContext(), event) .addData(METHOD_NAME, result.getMethod().getMethodName()) .addData(CLASS_NAME, result.getMethod().getRealClass().getCanonicalName()) .addData(CLASS_INSTANCE, result.getMethod().getInstance()) diff --git a/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateTracker.java b/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateTracker.java index 859e640e54..f8ecf617db 100644 --- a/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateTracker.java +++ b/testng-core/src/test/java/test/thread/parallelization/TestNgRunStateTracker.java @@ -6,7 +6,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -1009,7 +1008,6 @@ public String toString() { sb.append(", Data provider param: ").append(getData(EventInfo.DATA_PROVIDER_PARAM)); } - Date now = new Date(timeOfEvent); SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); sb.append(", Time of event: ").append(sdfDate.format(timeOfEvent)); diff --git a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithFactoryUsingDataProviderAndNoDepsSample.java b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithFactoryUsingDataProviderAndNoDepsSample.java index be76f8e266..2f22156604 100644 --- a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithFactoryUsingDataProviderAndNoDepsSample.java +++ b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithFactoryUsingDataProviderAndNoDepsSample.java @@ -161,7 +161,7 @@ public static Object[][] dataProvider(ITestContext context) { String dataProviderParam = params.get("dataProviderParam"); - String[] dataProviderVals = null; + String[] dataProviderVals; String classNamePattern = TestClassAFiveMethodsWithFactoryUsingDataProviderAndNoDepsSample.class.getSimpleName() + "("; diff --git a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithFactoryUsingDataProviderAndNoDepsSample.java b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithFactoryUsingDataProviderAndNoDepsSample.java index 8dec82732c..3a046db83e 100644 --- a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithFactoryUsingDataProviderAndNoDepsSample.java +++ b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithFactoryUsingDataProviderAndNoDepsSample.java @@ -138,7 +138,7 @@ public static Object[][] dataProvider(ITestContext context) { String dataProviderParam = params.get("dataProviderParam"); - String[] dataProviderVals = null; + String[] dataProviderVals; String classNamePattern = TestClassBFourMethodsWithFactoryUsingDataProviderAndNoDepsSample.class.getSimpleName() + "("; diff --git a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassCSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassCSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java index 81e55d20fd..6ebd375272 100644 --- a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassCSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java +++ b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassCSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java @@ -184,7 +184,7 @@ public static Object[][] dataProvider(ITestContext context) { String dataProviderParam = params.get("dataProviderParam"); - String[] dataProviderVals = null; + String[] dataProviderVals; String classNamePattern = TestClassCSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.class.getSimpleName() + "("; diff --git a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithFactoryUsingDataProviderAndNoDepsSample.java b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithFactoryUsingDataProviderAndNoDepsSample.java index 48f1ca254c..dfa54f7d8c 100644 --- a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithFactoryUsingDataProviderAndNoDepsSample.java +++ b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithFactoryUsingDataProviderAndNoDepsSample.java @@ -115,7 +115,7 @@ public static Object[][] dataProvider(ITestContext context) { String dataProviderParam = params.get("dataProviderParam"); - String[] dataProviderVals = null; + String[] dataProviderVals; String classNamePattern = TestClassDThreeMethodsWithFactoryUsingDataProviderAndNoDepsSample.class.getSimpleName() + "("; diff --git a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java index e6207bf2ae..919aef41e7 100644 --- a/testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java +++ b/testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java @@ -184,7 +184,7 @@ public static Object[][] dataProvider(ITestContext context) { String dataProviderParam = params.get("dataProviderParam"); - String[] dataProviderVals = null; + String[] dataProviderVals; String classNamePattern = TestClassFSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.class.getSimpleName() + "("; diff --git a/testng-core/src/test/java/test/timeout/GitHub1314Sample.java b/testng-core/src/test/java/test/timeout/GitHub1314Sample.java index 41a40f586d..2b7527f55b 100644 --- a/testng-core/src/test/java/test/timeout/GitHub1314Sample.java +++ b/testng-core/src/test/java/test/timeout/GitHub1314Sample.java @@ -15,7 +15,7 @@ private void iWorkWell() { private void iHangHorribly() { System.out.println("Test2"); while (true) { - int two = 1 + 1; + // hangs on purpose } } diff --git a/testng-core/src/test/java/test/uniquesuite/TestAfter.java b/testng-core/src/test/java/test/uniquesuite/TestAfter.java index ef9091e535..b4480ef950 100644 --- a/testng-core/src/test/java/test/uniquesuite/TestAfter.java +++ b/testng-core/src/test/java/test/uniquesuite/TestAfter.java @@ -25,5 +25,3 @@ public void afterTest() { BaseBefore.m_afterCount = 0; } } - -///// diff --git a/testng-core/src/test/java/test/xml/XmlVerifyTest.java b/testng-core/src/test/java/test/xml/XmlVerifyTest.java index def8e2accd..8a99b58b23 100644 --- a/testng-core/src/test/java/test/xml/XmlVerifyTest.java +++ b/testng-core/src/test/java/test/xml/XmlVerifyTest.java @@ -63,9 +63,8 @@ public void testThreadPoolRelatedAttributesPresentInXml() throws Exception { Node xmlSuite = allSuites.item(0); assertThat(xmlSuite.getNodeType()).isEqualTo(Node.ELEMENT_NODE); Element element = (Element) xmlSuite; - assertThat(element.getAttribute("use-global-thread-pool")).isEqualTo(Boolean.TRUE.toString()); - assertThat(element.getAttribute("share-thread-pool-for-data-providers")) - .isEqualTo(Boolean.TRUE.toString()); + assertThat(element.getAttribute("use-global-thread-pool")).isEqualTo("true"); + assertThat(element.getAttribute("share-thread-pool-for-data-providers")).isEqualTo("true"); } @AfterMethod diff --git a/testng-jcommander/src/test/java/test/reports/EmailableReporterCommandLineTest.java b/testng-jcommander/src/test/java/test/reports/EmailableReporterCommandLineTest.java index 88d17c3aba..f8a38acd1b 100644 --- a/testng-jcommander/src/test/java/test/reports/EmailableReporterCommandLineTest.java +++ b/testng-jcommander/src/test/java/test/reports/EmailableReporterCommandLineTest.java @@ -4,6 +4,7 @@ import java.io.File; import java.lang.reflect.Method; +import java.util.Locale; import org.testng.TestNG; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -30,7 +31,7 @@ public void testReportsNameCustomizationViaMainMethodInvocationAndJVMArguments( @DataProvider(name = "getReporterNames") public Object[][] getReporterNames(Method method) { - if (method.getName().toLowerCase().contains("jvmarguments")) { + if (method.getName().toLowerCase(Locale.ROOT).contains("jvmarguments")) { return new Object[][] {{EmailableReporter2.class.getName(), "emailable.report2.name"}}; } return new Object[][] {{EmailableReporter2.class.getName()}}; diff --git a/testng-runner-api/src/main/java/org/testng/internal/LiteWeightTestNGMethod.java b/testng-runner-api/src/main/java/org/testng/internal/LiteWeightTestNGMethod.java index 284b66db5f..27425b4b50 100644 --- a/testng-runner-api/src/main/java/org/testng/internal/LiteWeightTestNGMethod.java +++ b/testng-runner-api/src/main/java/org/testng/internal/LiteWeightTestNGMethod.java @@ -295,8 +295,8 @@ public long getTimeOut() { } @Override - public void setTimeOut(long timeOut) { - this.timeout = timeOut; + public void setTimeOut(long timeout) { + this.timeout = timeout; } @Override diff --git a/testng-test-kit/src/main/java/test/groups/issue2232/samples/SampleTest.java b/testng-test-kit/src/main/java/test/groups/issue2232/samples/SampleTest.java index e921b33583..e5c9530484 100644 --- a/testng-test-kit/src/main/java/test/groups/issue2232/samples/SampleTest.java +++ b/testng-test-kit/src/main/java/test/groups/issue2232/samples/SampleTest.java @@ -8,17 +8,11 @@ @Test(groups = {"Group1", "Group2", "Group3"}) public class SampleTest { - private int variable = 0; - @BeforeClass - public void setUp() { - variable += 1; - } + public void setUp() {} @AfterMethod - public void tearDown() { - variable += 1; - } + public void tearDown() {} @DataProvider(name = "testData1") public Object[][] testData1() { @@ -28,7 +22,5 @@ public Object[][] testData1() { } @Test(dataProvider = "testData1") - public void test1(String test) { - variable += 1; - } + public void test1(String test) {} } diff --git a/testng-test-kit/testng-test-kit-build.gradle.kts b/testng-test-kit/testng-test-kit-build.gradle.kts index b214fd14c3..a9490851a2 100644 --- a/testng-test-kit/testng-test-kit-build.gradle.kts +++ b/testng-test-kit/testng-test-kit-build.gradle.kts @@ -1,9 +1,25 @@ +import net.ltgt.gradle.errorprone.errorprone + plugins { id("testng.kotlin-library") } description = "Test fixtures shared by the TestNG modules. Never published." +// Everything here is test code even though it lives in a main source set. testng.errorprone +// reads this flag, and so does Error Prone itself -- several of its checks skip a compile +// marked test-only -- so opting a module in is a coverage decision, not just a switch. +// +// Error Prone is optional: testng.java only applies it when -PskipErrorProne is off, and the +// OpenRewrite job turns it off because Error Prone is a javac plugin OpenRewrite never sees. +// Reaching for options.errorprone unconditionally fails task configuration in those builds, so +// the option is registered only once the plugin that owns the extension is there. +pluginManager.withPlugin("net.ltgt.errorprone") { + tasks.withType().configureEach { + options.errorprone.compilingTestOnlyCode.set(true) + } +} + dependencies { api(platform("org.jetbrains.kotlin:kotlin-bom:2.4.10")) api("org.jetbrains.kotlin:kotlin-stdlib") { diff --git a/testng-yaml/src/main/java/org/testng/internal/YamlSchema.java b/testng-yaml/src/main/java/org/testng/internal/YamlSchema.java index 9115c46049..3fc2dbcfce 100644 --- a/testng-yaml/src/main/java/org/testng/internal/YamlSchema.java +++ b/testng-yaml/src/main/java/org/testng/internal/YamlSchema.java @@ -324,12 +324,9 @@ SchemaType listKey(String name, Class elementType, BiConsumer SchemaType mapKey( String name, Function, V> conversion, BiConsumer setter) { - return add( - new SchemaProperty( - name, - Map.class, - (target, value) -> - setter.accept(uncheckedCast(target), conversion.apply((Map) value)))); + BiConsumer converting = + (target, value) -> setter.accept(target, conversion.apply((Map) value)); + return add(new SchemaProperty(name, Map.class, cast(converting))); } /** An accepted spelling of {@code canonical} that warns when it is used. */ @@ -399,11 +396,6 @@ private SchemaType add(SchemaProperty property) { return this; } - @SuppressWarnings("unchecked") - private static V uncheckedCast(Object value) { - return (V) value; - } - @SuppressWarnings({"unchecked", "rawtypes"}) private static BiConsumer cast(BiConsumer setter) { return (BiConsumer) (BiConsumer) setter;