Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Where can I find the call stack of an exception/assert? #37

Open
toptensoftware opened this issue Apr 28, 2024 · 7 comments
Open

Where can I find the call stack of an exception/assert? #37

toptensoftware opened this issue Apr 28, 2024 · 7 comments

Comments

@toptensoftware
Copy link

When a test throws an exception or an assertion is there somewhere I can see the call stack?

eg: this is what is see with the extension:

image

whereas this is what I see from the command line which is much more useful.

image

@drk-mtr
Copy link

drk-mtr commented May 5, 2024

This would be a nice addition for extensions that use the Testing API generally - I think the vitest extension would benefit from the same - so I wonder whether this would be a tweak to the Testing API.

@drk-mtr
Copy link

drk-mtr commented May 6, 2024

I threw together a basic example of this here:

https://github.com/drk-mtr/nodejs-testing/pull/1/files

I've never written any production-ready code, so this is just a proof of concept and will most likely have issues.

node-test-runner-with-cause

To use it, clone, run npm install, then npm run package, then in VS Code Extensions: Install from VSIX....

I won't be working on a PR to get this in, partly because I wouldn't know how to test it, but mostly because I suspect @connor4312 won't want this PRing in. It doesn't seem to quite align with what the Diagnostics Panel in the VS Code Testing API is designed for - but I would welcome a tweak to this API that accommodates for this.

It would also be very cool if we could get formatted text in this panel, so that we can (for example) have the messages in different text to the stack traces - but I think that's also a Testing API concern not one for this library.

Worth noting - you can also see stack trace info by hovering over the red text to the right of the test title:

node-test-runner-with-cause-2

@toptensoftware
Copy link
Author

Thanks so much for looking into this.

Unfortunately I just tried it, but couldn't see any noticeable difference. Even tried clocking the version number to 1.5.2 rebuilding and reinstalling. Checked I had the correct branch and your changes (buildStackPhrase was there). Same thing.

Then I loaded the project in VS Code and ran it, put a throw statement in one of the included tests and still nothing.

What might I be missing?

image

@drk-mtr
Copy link

drk-mtr commented May 7, 2024

Did you uninstall the real "node:test runner" extension first? I get this:

image

@toptensoftware
Copy link
Author

Yes, I uninstalled the extension first.

Not sure what you mean the assert has no call stack. When I run the same test from command line I get more complete error information including the file/line number location of the exception:

image

@drk-mtr
Copy link

drk-mtr commented May 7, 2024

I edited my message to remove that comment as it was incorrect :)

Not sure what to suggest I'm afraid - I made the modifications on a Linux PC and installed without issue on a Windows PC today, so I'm not sure what the cause could be. I'd maybe try clearing the relevant directories from the extensions folder (~/.vscode/ on Linux) and installing again.

@toptensoftware
Copy link
Author

OK, not sure went wrong yesterday but I completely uninstalled, deleted the old extension from the extension directory and reinstalled the VSIX and it's working much better today.

This is a great improvement, but there two small issues:

1. Only getting call stacks for exceptions, not asserts

It looks like the call stack/location has been captured (see far right of red error message shows "(file://....)" but I can't see the full error message with stack, just the assert diff.

image

I just noticed I can hover and get the fulll stack trace:

image

Even better would if I could click those file locations and jump to the location of the error.

2. Clicking a file:// link in the call stack doesn't work

For exceptions (not asserts) the full stack trace is shown in the error panel however clicking a link doesn't work:

eg:

image

but when I click the link it shows:

image

I'm guessing this is related to the :linenumber:pos suffix and could be a Windows or VS code issue, but thought I'd report it anyway. Maybe there's some way to reformat the link so VS Code understands it better?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants