-
Bug
-
Resolution: Fixed
-
P4
-
10
-
b32
-
generic
-
generic
The comparator used in TestReorderInterceptor to sort nashorn tests does not fulfill the contract required by the Comparator.compare method. It returns 0 if any argument is not an ITest, which would require that arguments return the same sign when compared to a third object.
This wasn't a problem so far, but some recent change (eithern in our test suite or in the JDK) triggers the code when running 'ant test':
-test-security:
[testng] [TestNG] Running:
[testng] Ant suite
[testng]
[testng] Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
[testng] at java.base/java.util.TimSort.mergeHi(TimSort.java:899)
[testng] at java.base/java.util.TimSort.mergeAt(TimSort.java:516)
[testng] at java.base/java.util.TimSort.mergeForceCollapse(TimSort.java:457)
[testng] at java.base/java.util.TimSort.sort(TimSort.java:254)
[testng] at java.base/java.util.Arrays.sort(Arrays.java:1440)
[testng] at java.base/java.util.Arrays$ArrayList.sort(Arrays.java:4404)
[testng] at java.base/java.util.Collections.sort(Collections.java:175)
[testng] at jdk.nashorn.internal.test.framework.TestReorderInterceptor.intercept(TestReorderInterceptor.java:42)
[testng] at org.testng.TestRunner.intercept(TestRunner.java:787)
[testng] at org.testng.TestRunner.privateRun(TestRunner.java:734)
[testng] at org.testng.TestRunner.run(TestRunner.java:617)
[testng] at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
[testng] at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
[testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
[testng] at org.testng.SuiteRunner.run(SuiteRunner.java:240)
[testng] at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
[testng] at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
[testng] at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
[testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
[testng] at org.testng.TestNG.run(TestNG.java:1031)
[testng] at org.testng.TestNG.privateMain(TestNG.java:1338)
[testng] at org.testng.TestNG.main(TestNG.java:1307)
This wasn't a problem so far, but some recent change (eithern in our test suite or in the JDK) triggers the code when running 'ant test':
-test-security:
[testng] [TestNG] Running:
[testng] Ant suite
[testng]
[testng] Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
[testng] at java.base/java.util.TimSort.mergeHi(TimSort.java:899)
[testng] at java.base/java.util.TimSort.mergeAt(TimSort.java:516)
[testng] at java.base/java.util.TimSort.mergeForceCollapse(TimSort.java:457)
[testng] at java.base/java.util.TimSort.sort(TimSort.java:254)
[testng] at java.base/java.util.Arrays.sort(Arrays.java:1440)
[testng] at java.base/java.util.Arrays$ArrayList.sort(Arrays.java:4404)
[testng] at java.base/java.util.Collections.sort(Collections.java:175)
[testng] at jdk.nashorn.internal.test.framework.TestReorderInterceptor.intercept(TestReorderInterceptor.java:42)
[testng] at org.testng.TestRunner.intercept(TestRunner.java:787)
[testng] at org.testng.TestRunner.privateRun(TestRunner.java:734)
[testng] at org.testng.TestRunner.run(TestRunner.java:617)
[testng] at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
[testng] at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
[testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
[testng] at org.testng.SuiteRunner.run(SuiteRunner.java:240)
[testng] at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
[testng] at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
[testng] at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
[testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
[testng] at org.testng.TestNG.run(TestNG.java:1031)
[testng] at org.testng.TestNG.privateMain(TestNG.java:1338)
[testng] at org.testng.TestNG.main(TestNG.java:1307)