CodeLens Run Test In Terminal doesn't work (on Windows) due to incorrectly escaped Regex
Nobody has claimed this yet.
- Dominant language
- Ruby
- Stars
- 2k
- Forks
- 281
- Avg merge
- 2h 14m
- Merged PRs (30d)
- 6
Description
Description
Ruby LSP Information
VS Code Version
1.104.1
Ruby LSP Extension Version
0.9.32
Ruby LSP Server Version
0.26.1
Ruby LSP Add-ons
- RuboCop (unknown)
Ruby Version
3.1.4
Ruby Version Manager
none
Installed Extensions
Click to expand
- Lisp (0.1.12)
- code-spell-checker (4.2.6)
- color-highlight (2.8.0)
- errorlens (3.26.0)
- exercism-cli (0.2.2)
- gitlens (17.4.1)
- jikiscript (1.0.0)
- postcss (1.0.9)
- prettier-vscode (11.0.0)
- rails (0.22.0)
- rainbow-csv (3.22.0)
- react-native-ide (1.3.0)
- remote-explorer (0.5.0)
- remote-ssh (0.120.0)
- remote-ssh-edit (0.87.0)
- ruby-lsp (0.9.32)
- vscode-eslint (3.0.16)
- vscode-expo-tools (1.6.1)
- vscode-github-actions (0.27.2)
- vscode-graphql (0.13.2)
- vscode-graphql-syntax (1.3.8)
- vscode-tailwindcss (0.14.26)
- vscode-versionlens (1.22.4)
- vscode-yaml (1.18.0)
- vscode-zipfs (3.0.0)
- vsliveshare (1.0.5959)
Ruby LSP Settings
Click to expand
Workspace
{
"indexing": {
"includedPatterns": [
"lib/**/*.rb",
"test/**/*.rb"
]
}
}
User
{
"enabledFeatures": {
"codeActions": true,
"diagnostics": true,
"documentHighlights": true,
"documentLink": true,
"documentSymbols": true,
"foldingRanges": true,
"formatting": false,
"hover": true,
"inlayHint": true,
"onTypeFormatting": false,
"selectionRanges": true,
"semanticHighlighting": true,
"completion": true,
"codeLens": true,
"definition": true,
"workspaceSymbol": true,
"signatureHelp": true,
"typeHierarchy": true
},
"featuresConfiguration": {},
"addonSettings": {},
"rubyVersionManager": {
"identifier": "none"
},
"customRubyCommand": "",
"formatter": "auto",
"linters": null,
"bundleGemfile": "",
"testTimeout": 30,
"branch": "",
"pullDiagnosticsOn": "both",
"useBundlerCompose": false,
"bypassTypechecker": false,
"rubyExecutablePath": "",
"indexing": {
"includedPatterns": [
"lib/**/*.rb",
"test/**/*.rb"
]
},
"erbSupport": true,
"featureFlags": {},
"sigOpacityLevel": "1"
}
Reproduction steps
- Start the Ruby LSP using VS Code
- Open a Ruby test file with a single test
- Click "Run Test in Terminal"
- Terminal reports no tests ran
class TestNothing < Minitest::Test
def test_nothing
refute_nil true
end
end
The full file can be tested:
C:\Users\Derk-Jan\...snip...>bundle exec ruby -rC:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/ruby-lsp-0.26.1/lib/ruby_lsp/test_reporters/minitest_reporter.rb -rC:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/ruby-lsp-0.26.1/lib/ruby_lsp/test_reporters/test_unit_reporter.rb -Itest c:/Users/Derk-Jan/...snip.../test/test_nothing.rb --name "/^TestNothing(#|::)/"
Run options: --name "/^TestNothing(#|::)/" --seed 56682
# Running:
.
Finished in 0.015750s, 63.4917 runs/s, 63.4917 assertions/s.
Simplifying this command we see:
bundle exec ruby -rPathToLspProvidedReporter.rb -rPathToAnotherLspProvidedReporter.rb -Itest PathToFile --name "/^TestClassName(#|::)/"
There are three paths:
- PathToLspProvidedReporter
- PathToAnotherLspProvidedReporter
- PathToFile
There is one regex matcher:
- /^TestNothing(#|::)/
For a single test, we get:
C:\Users\Derk-Jan\...snip...>bundle exec ruby -rC:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/ruby-lsp-0.26.1/lib/ruby_lsp/test_reporters/minitest_reporter.rb -rC:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/ruby-lsp-0.26.1/lib/ruby_lsp/test_reporters/test_unit_reporter.rb -Itest c:/Users/Derk-Jan/...snip.../test_nothing.rb --name "/^TestNothing#test_nothing\$/"
Run options: --name "/^TestNothing#test_nothing\\$/" --seed 33369
[...]
Finished in 0.010229s, 0.0000 runs/s, 0.0000 assertions/s.
0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
Nothing ran for filter: /^TestNothing#test_nothing\$/
The issue can be seen in the --name argument:
/^TestNothing#test_nothing\\$/
Removing the extra slash makes the entire command work again.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Trace the Ruby LSP CodeLens “Run Test in Terminal” command construction, using the reported minitest_reporter.rb and test_unit_reporter.rb paths as context. Reproduce the Windows command with the provided TestNothing example and inspect how the single-test regex is escaped. Done means the generated command runs the selected test instead of reporting zero tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ruby
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100