CodeLens Run Test In Terminal doesn't work (on Windows) due to incorrectly escaped Regex
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 48/100
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.
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.
- Dominant language
- Ruby
- Stars
- 2k
- Forks
- 281
- Avg merge
- 1h 47m
- Merged PRs (30d)
- 8
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.
More from Shopify/ruby-lsp
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
bug help-wanted pinned
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug pinned
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 68/100
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 35/100
All issues in Shopify/ruby-lsp
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
palladius/rails8-app-on-gcp#145 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
riscv/riscv-unified-db#2624 · 1 reaction ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100