-
Notifications
You must be signed in to change notification settings - Fork 75
Use hierarchical workspace/tests
LSP request to get Test list
#761
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
Labels
enhancement
New feature or request
Comments
I can take a look at this. |
plemarquand
added a commit
to plemarquand/vscode-swift
that referenced
this issue
Apr 24, 2024
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.
plemarquand
added a commit
to plemarquand/vscode-swift
that referenced
this issue
Apr 29, 2024
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.
plemarquand
added a commit
that referenced
this issue
Apr 29, 2024
* Discover tests via LSP if available 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 #757. - Adds tests for parsing the results of `swift test --list-tests` - Adds tests for parsing tests via document symbols This patch addresses both #761 and #762. * Update comments * Member accessed tags no longer have a leading . * Properly check if experimental lsp caps exist * Append target to swift-testing test ids * Refactor out common LSP capability check * Rename transform to transformToTestClass * No need to filter workspace tests to the workspace * Cache caps checks
Closed by #767 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There is code is place to read the original flat representation format of
workspace/tests
but this has now been replaced by a hierarchical view that is closer in format to how tests are represented in VSCode.The request should be called from
TestExplorer. discoverTestsInWorkspace
https://github.com/swift-server/vscode-swift/blob/dfba3243e6cb97faa45037d11478e2714d4d5e17/src/TestExplorer/TestExplorer.ts#L170-L180. This is called at initialisation and after every compile, where a test file has been changed. Currently the LSP request call is commented out.LSPTestDiscovery.getWorkspaceTests
returns an intermediary format. You can probably avoid this and merge the response directly into the test list. Anyway the intermediary format is too restrictive for swift-testing.The text was updated successfully, but these errors were encountered: