{"id":30761489,"url":"https://github.com/kbwo/testing-language-server","last_synced_at":"2025-09-04T14:11:35.549Z","repository":{"id":238545922,"uuid":"790770960","full_name":"kbwo/testing-language-server","owner":"kbwo","description":"Language server for real-time testing diagnostics","archived":false,"fork":false,"pushed_at":"2024-10-19T08:14:33.000Z","size":255,"stargazers_count":36,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-20T04:44:44.010Z","etag":null,"topics":["language-server","language-server-protocol","testing"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kbwo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-23T13:52:39.000Z","updated_at":"2024-10-19T11:28:42.000Z","dependencies_parsed_at":"2024-07-06T07:50:34.752Z","dependency_job_id":"458697f2-ee09-41a0-9095-33ba9f304722","html_url":"https://github.com/kbwo/testing-language-server","commit_stats":null,"previous_names":["kbwo/testing-language-server"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/kbwo/testing-language-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbwo%2Ftesting-language-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbwo%2Ftesting-language-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbwo%2Ftesting-language-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbwo%2Ftesting-language-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kbwo","download_url":"https://codeload.github.com/kbwo/testing-language-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbwo%2Ftesting-language-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273619738,"owners_count":25138241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["language-server","language-server-protocol","testing"],"created_at":"2025-09-04T14:11:33.770Z","updated_at":"2025-09-04T14:11:35.543Z","avatar_url":"https://github.com/kbwo.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# testing-language-server\n\n⚠️ **IMPORTANT NOTICE**\nThis project is under active development and may introduce breaking changes. If you encounter any issues, please make sure to update to the latest version before reporting bugs.\n\nGeneral purpose LSP server that integrate with testing.\nThe language server is characterized by portability and extensibility.\n\n## Motivation\n\nThis LSP server is heavily influenced by the following tools\n\n- [neotest](https://github.com/nvim-neotest/neotest)\n- [Wallaby.js](https://wallabyjs.com)\n\nThese tools are very useful and powerful. However, they depend on the execution environment, such as VSCode and Neovim, and the portability aspect was inconvenient for me.\nSo, I designed this testing-language-server and its dedicated adapters for each test tool to be the middle layer to the parts that depend on each editor.\n\nThis design makes it easy to view diagnostics from tests in any editor. Environment-dependent features like neotest and VSCode's built-in testing tools can also be achieved with minimal code using testing-language-server.\n\n## Instllation\n\n```sh\ncargo install testing-language-server\ncargo install testing-ls-adapter\n```\n\n## Features\n\n- [x] Realtime testing diagnostics\n- [x] [VSCode extension](https://github.com/kbwo/vscode-testing-ls)\n- [x] [coc.nvim extension](https://github.com/kbwo/coc-testing-ls)\n- [x] For Neovim builtin LSP, see [testing-ls.nvim](https://github.com/kbwo/testing-ls.nvim)\n- [ ] More efficient checking of diagnostics\n- [ ] Useful commands in each extension\n\n## Configuration\n\n### Required settings for all editors\nYou need to prepare .testingls.toml. See [this](./demo/.testingls.toml) for an example of the configuration.\n\n```.testingls.toml\nenableWorkspaceDiagnostics = true\n\n[adapterCommand.cargo-test]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=cargo-test\"]\ninclude = [\"/**/src/**/*.rs\"]\nexclude = [\"/**/target/**\"]\n\n[adapterCommand.cargo-nextest]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=cargo-nextest\"]\ninclude = [\"/**/src/**/*.rs\"]\nexclude = [\"/**/target/**\"]\n\n[adapterCommand.jest]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=jest\"]\ninclude = [\"/jest/*.js\"]\nexclude = [\"/jest/**/node_modules/**/*\"]\n\n[adapterCommand.vitest]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=vitest\"]\ninclude = [\"/vitest/*.test.ts\", \"/vitest/config/**/*.test.ts\"]\nexclude = [\"/vitest/**/node_modules/**/*\"]\n\n[adapterCommand.deno]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=deno\"]\ninclude = [\"/deno/*.ts\"]\nexclude = []\n\n[adapterCommand.go]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=go-test\"]\ninclude = [\"/**/*.go\"]\nexclude = []\n\n[adapterCommand.node-test]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=node-test\"]\ninclude = [\"/node-test/*.test.js\"]\nexclude = []\n\n[adapterCommand.phpunit]\npath = \"testing-ls-adapter\"\nextra_arg = [\"--test-kind=phpunit\"]\ninclude = [\"/**/*Test.php\"]\nexclude = [\"/phpunit/vendor/**/*.php\"]\n```\n\n### VSCode\n\nInstall from [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=kbwo.testing-language-server).\nYou can see the example in [settings.json](./demo/.vscode/settings.json).\n\n### coc.nvim\nInstall from `:CocInstall coc-testing-ls`.\nYou can see the example in [See more example](./.vim/coc-settings.json)\n\n### Neovim (nvim-lspconfig)\n\nSee [testing-ls.nvim](https://github.com/kbwo/testing-ls.nvim)\n\n### Helix\nSee [language.toml](./demo/.helix/language.toml).\n\nThe array wrapper has been removed to simplify the configuration structure. Please update your settings accordingly.\n\n## Adapter\n- [x] `cargo test`\n- [x] `cargo nextest`\n- [x] `jest`\n- [x] `deno test`\n- [x] `go test`\n- [x] `phpunit`\n- [x] `vitest`\n- [x] `node --test` (Node Test Runner)\n\n### Writing custom adapter\n⚠ The specification of adapter CLI is not stabilized yet.\n\nSee [ADAPTER_SPEC.md](./doc/ADAPTER_SPEC.md) and [spec.rs](./src/spec.rs).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbwo%2Ftesting-language-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkbwo%2Ftesting-language-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbwo%2Ftesting-language-server/lists"}