-
Notifications
You must be signed in to change notification settings - Fork 74
Discover tests via LSP if available #767
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
Conversation
Note: This will only work with the latest sourcekit-lsp. To test you can clone the sourcekit-lsp repo, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good to me, but probably should get another set of eyes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great. Left a few comments about minor issues
If the LSP is available and supports the two requests for listing tests then use those to discover tests in the workspace/document. If these requests are unsupported or if they fail, fall back to the existing methods. This patch uses the existing code to leverage the LSP's workspace/tests method and adds the textDocument/tests for listing tests within documents as they change. These requests produce a collection of TestClass structures, which are hierarchical. These are passed to one of the methods in TestDiscovery.ts which diffs against the existing tree and adds/removes tests. This is similar to how it already worked, but now supports arbitrary levels of nesting in the TestClass structure. This patch also adds preliminary support for listing swift-testing tests through the LSP methods, as well as through `swift test --list-tests`. It does not support finding swift-testing tests through the document symbols. Another small improvement is if listing tests fails via `swift test --list-tests` we'll attempt a `swift build --build-tests` before trying again. If the user was on the 5.10 toolchain and no build had yet been performed they would get an error. Swift-testing tests are filtered out of the list of available tests until code is added to run them. This will be added with swiftlang#757. - Adds tests for parsing the results of `swift test --list-tests` - Adds tests for parsing tests via document symbols This patch addresses both swiftlang#761 and swiftlang#762.
f391a56
to
d587d81
Compare
Before merging this I thought I'd test swift 5.10 and it looks like the document symbols loading isn't working |
Ah I see what you have done. By converting to the |
This reverts commit 0f21573.
If the LSP is unavailable `swift test list` will be used to enumerate the tests. This method cannot attach a location to the TestClasses. The code pre swiftlang#767 took this in to account, but swiftlang#767 introduced a regression that would overwrite an existing item enumerated by document symbols which had a location with one that didn't.
If the LSP is unavailable `swift test list` will be used to enumerate the tests. This method cannot attach a location to the TestClasses. The code pre #767 took this in to account, but #767 introduced a regression that would overwrite an existing item enumerated by document symbols which had a location with one that didn't.
If the LSP is available and supports the two requests for listing tests then use those to discover tests in the workspace/document. If these requests are unsupported or if they fail, fall back to the existing methods.
This patch uses the existing code to leverage the LSP's workspace/tests method and adds the textDocument/tests for listing tests within documents as they change.
These requests produce a collection of TestClass structures, which are hierarchical. These are passed to one of the methods in TestDiscovery.ts which diffs against the existing tree and adds/removes tests. This is similar to how it already worked, but now supports arbitrary levels of nesting in the TestClass structure.
This patch also adds preliminary support for listing swift-testing tests through the LSP methods, as well as through
swift test --list-tests
. It does not support finding swift-testing tests through the document symbols.Another small improvement is if listing tests fails via
swift test --list-tests
we'll attempt aswift build --build-tests
before trying again. Today, if the user was on the 5.10 toolchain and no build had yet been performed they would get a somewhat cryptic error in the test explorer.Swift-testing tests are filtered out of the list of available tests until code is added to run them. This will be added with #757.
swift test --list-tests
This patch addresses both #761 and #762.