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

Add support for swift-testing #757

Open
daveyc123 opened this issue Apr 19, 2024 · 2 comments
Open

Add support for swift-testing #757

daveyc123 opened this issue Apr 19, 2024 · 2 comments
Assignees
Labels
enhancement New feature or request up next

Comments

@daveyc123
Copy link
Collaborator

The extension should support discovering and executing tests defined via swift-testing. XCTests should continue to work alongside this functionality.

@daveyc123 daveyc123 added enhancement New feature or request up next labels Apr 19, 2024
@plemarquand
Copy link
Collaborator

I'll take this.

@plemarquand
Copy link
Collaborator

This depends on #761 and #762

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 swift-server#757.

- Adds tests for parsing the results of `swift test --list-tests`
- Adds tests for parsing tests via document symbols

This patch addresses both swift-server#761 and swift-server#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 swift-server#757.

- Adds tests for parsing the results of `swift test --list-tests`
- Adds tests for parsing tests via document symbols

This patch addresses both swift-server#761 and swift-server#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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request up next
Projects
Development

No branches or pull requests

2 participants