diff options
author | gjoranv <gv@yahooinc.com> | 2023-07-13 15:30:35 +0200 |
---|---|---|
committer | gjoranv <gv@yahooinc.com> | 2023-07-13 15:31:02 +0200 |
commit | 549b0b35a761cdafaa869ee802f63857543f39ac (patch) | |
tree | 94e8de04fded191948a0fefdd32c8d73be318348 /vespa-osgi-testrunner | |
parent | bea252d02f73f1bd0546094313e34bf3adf1d6c0 (diff) |
Trim stack traces correctly on both jdk 17 and jdk 21
Diffstat (limited to 'vespa-osgi-testrunner')
-rw-r--r-- | vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java index 1641bd7802f..a2ac86309d9 100644 --- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java +++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java @@ -336,15 +336,15 @@ public class TestReport { StackTraceElement[] stack = thrown.getStackTrace(); int i = 0; - int previousNativeFrame = -1; + int firstReflectFrame = -1; int cutoff = 0; boolean rootedInTestFramework = false; while (++i < stack.length) { rootedInTestFramework |= testFrameworkRootClass.equals(stack[i].getClassName()); - if (stack[i].isNativeMethod()) - previousNativeFrame = i; // Native method invokes the first user test frame. - if (rootedInTestFramework && previousNativeFrame > 0) { - cutoff = previousNativeFrame; + if (firstReflectFrame == -1 && stack[i].getClassName().startsWith("jdk.internal.reflect.")) + firstReflectFrame = i; // jdk.internal.reflect class invokes the first user test frame, on both jdk 17 and 21. + if (rootedInTestFramework && firstReflectFrame > 0) { + cutoff = firstReflectFrame; break; } boolean isDynamicTestInvocation = "org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor".equals(stack[i].getClassName()); |