matthiasblaesing commented on code in PR #8568:
URL: https://github.com/apache/netbeans/pull/8568#discussion_r3005229458
##########
java/maven.junit.ui/src/org/netbeans/modules/maven/junit/ui/MavenJUnitNodeOpener.java:
##########
@@ -186,18 +188,18 @@ public void openCallstackFrame(Node node, @NonNull String
frameInfo) {
FileObject file = UIJavaUtils.getFile(frameInfo, lineNumStorage,
locator);
//lineNumStorage -1 means no regexp for stacktrace was matched.
if (testfo != null && file == null &&
methodNode.getTestcase().getTrouble() != null && lineNumStorage[0] == -1) {
- //213935 we could not recognize the stack trace line and map
it to known file
+ //213935 we could not recognize the stack trace line and map it to
known file
//if it's a failure text, grab the testcase's own line from the
stack.
String[] st =
methodNode.getTestcase().getTrouble().getStackTrace();
- if ((st != null) && (st.length > 0)) {
- int index = st.length - 1;
- //213935 we need to find the testcase linenumber to jump
to.
- // and ignore the infrastructure stack lines in the process
- while (!testfo.equals(file) && index != -1) {
+ for (int index = 0; !testfo.equals(file) && index < st.length;
index++) {
+ String trimmed = JavaRegexpUtils.specialTrim(st[index]);
+ if
(trimmed.startsWith(JavaRegexpUtils.CALLSTACK_LINE_PREFIX_CATCH)
+ ||
trimmed.startsWith(JavaRegexpUtils.CALLSTACK_LINE_PREFIX)) {
file = UIJavaUtils.getFile(st[index], lineNumStorage,
locator);
- index -= 1;
+ break;
}
}
+
}
Review Comment:
I see problems here:
- `UIJavaUtils.getFile` can yield `null` and while that is a bogus value, it
would stop the iteration.
- before the change there was a null guard, did you check, that
`getStackTrace` is always non null?
I also think that this method already does "the right thing". At least my
manual tests worked as expected (with this reverted I'm still taken to the
testcase, not the deeper assert in the same class/file).
The stacktrace starts with the "deepest" method and ends at the most top
level method. It is scanned from last to first index and stops at the first
method, for which the file matches the expected file. So it will match the
testcase method, not some deeply nested assert.
I remember, that I asked that this should unified, but I think ant and maven
drifted away from each other, so lets keep this as it was.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists