Changelog¶
v1.0.0 - 2025-10-25¶
Enhancements¶
Introduced
register_lsp_featureswhich should make it easier to modify and extend the behaviour of the default language client. (#195)
Client Capabilities¶
Add client capabilities for neovim
v0.11.0(#198)
Misc¶
v1.0.0b2 - 2024-11-23¶
Fixes¶
pytest-lspis now able to detect the situation where the server process exits while the client is waiting on a notification message and fail the test accordingly (#186)
Misc¶
Update
pyglstov2.0a2(#188)
v1.0.0b1 - 2024-09-04¶
Breaking Changes¶
Misc¶
v0.4.3 - 2024-08-28¶
Fixes¶
The client now waits for the server process to gracefully exit by @OhioDschungel6 (#173)
v0.4.2 - 2024-05-22¶
Client Capabilities¶
Add client capabilities for Neovim v0.10.0 (#164)
Misc¶
Start testing against pytest v8 (#145)
v0.4.1 - 2024-02-07¶
Enhancements¶
When a test fails
pytest-lspwill now show the server’sstderroutput (if any) (#143)
Client Capabilities¶
Add client capabilities for Emacs v29.1 (#142)
Fixes¶
LspSpecificationWarningswill no longer be incorrectly emitted when a client does indeed supportwindow/workDoneProgress/createrequests (#119)
Misc¶
Bump minimum version of
pytest-asyncioto0.23.0(#126)
v0.4.0 - 2023-11-13¶
Features¶
The test
LanguageClientnow supportsworkspace/configurationrequests (#90)pytest-lsp’s
LanguageClientis now able to handlewindow/workDoneProgress/createrequests. (#91)pytest-lspis now able to integrate withlsp-devtools, runpytestwith the--lsp-devtoolsflag to enable the integration. (#97)
Enhancements¶
It is now possible to select a specific version of a client when using the
client_capabilities()function. e.g.client-name@latest,client-name@v2orclient-name@2.1.3.pytest-lspwill choose the latest available version of the client that satisfies the given constraint. (#101)
Client Capabilities¶
v0.3.1 - 2023-10-06¶
This release includes some minor breaking changes if you were using the lower-level APIs e.g make_client_server.
See this commit for a sample migration
Enhancements¶
pytest-lsp’s
LanguageClientis now based on the one provided bypygls. The main benefit is that the server connection is now based on anasyncio.subprocess.Processremoving the need for pytest-lsp to constantly check to see if the server is still running. (#61)Fixtures created with the
@pytest_lsp.fixturedecorator can now request additional pytest fixtures (#71)It is now possible to set the environment variables that the server under test is launched with. (#72)
It is now possible to test any JSON-RPC based server with
pytest-lsp. Note however, this support will only ever extend to managing the client-server connection. (#73)
Misc¶
v0.3.0 - 2023-05-19¶
Features¶
@pytest_lsp.fixturenow supports theyieldstatement, allowing theclientfixture definition to be responsible for initialising and shutting down the LSP session granting the test author full control over the contents of theinitializerequest.This is a breaking change, see the documentation for details and this PR for an example migration. (#47)
If a client’s capabilities has been set, pytest-lsp will automatically check the server’s response to see if it is compatible with the capabilities the client provided.
If an issue is detected, pytest-lsp will emit an
LspSpecificationWarningNote: This relies on a dedicated
check_xxxfunction being written for each request so only a subset of the LSP spec is currently supported. (#57)
Docs¶
Misc¶
The client-server connection is now managed by a single asyncio event loop, rather than spinning up multiple threads, resulting in a much simpler architecture. (#44)
Removed¶
v0.2.1 - 2023-01-14¶
Fixes¶
Ensure that the test client returns a
ShowDocumentResultforwindow/showDocumentrequests. (#34)
v0.2.0 - 2023-01-10¶
Features¶
The
LanguageClientnow exposes methods covering the full LSP spec thanks to autogenerating its client from type definitions provided bylsprotocol(#25)
Misc¶
Support for Python 3.6 has been dropped.
Support for Python 3.11 has been added.
Upgraded to pygls 1.0. (#25)
v0.1.3 - 2022-10-15¶
Fixes¶
Check that server provided for testing doesn’t crash within the first 0.1 seconds
Return
INITIALIZEresponse fromClientServer.start(). This allows tests to assert against the server’sINITIALIZEresponse without resending theINITIALIZErequest in the actual test. (#22)
v0.1.2 - 2022-07-18¶
Enhancements¶
Add helpers for
textDocument/implementationrequests (#15)
v0.1.1 - 2022-07-17¶
Misc¶
Remove upper bound on required
pyglsversion (#14)
v0.1.0 - 2022-07-02¶
Features¶
Any
window/logMessagemessages emitted by a server under test are now captured and reported alongside any test failures (#5)
Enhancements¶
For currently implemented lsp request helpers, the test client now supports all valid return types. (#11)
Fixes¶
The test client now correctly handles
nullresponses. (#9)
v0.0.7 - 2022-05-26¶
Enhancements¶
Add helpers for
textDocument/hoverrequests. (#8)
v0.0.6 - 2022-04-18¶
Enhancements¶
Added helpers for
textDocument/documentLinkrequests. (#4)
v0.0.5 - 2022-04-02¶
Fixes¶
The plugin should now work on Python v3.6+ (#1)
v0.0.3 - 2022-03-28¶
Removed¶
Removed
event_loopfixture
v0.0.3 - 2022-03-28¶
Fixes¶
Fixture creation on Python 3.6 should now work
v0.0.2 - 2022-03-28¶
Fixes¶
Ensure the
py.typedfile is packaged.The
importlib_resourcesimport on Python 3.6 should now work
v0.0.1 - 2022-03-28¶
Initial Release