A Ruby test adapter extension for the VS Code Test Explorer
MIT License
Install it from the VS Code Marketplace.
This is a Ruby Test Explorer extension for the VS Code Test Explorer extension.
The extension supports the RSpec and Minitest test frameworks.
The extension needs Ruby and the rspec-core
gem installed (and any other dependencies required by your test suite). It's been tested with Ruby 2.6 and Rspec 3.8, but it should work with most recent versions of Ruby and all versions of Rspec 3.x above 3.6.0 (versions before 3.6.0 do not currently work because they don't expose an id
property for tests in the JSON formatter).
By default, you need to have rspec
installed via Bundler with a Gemfile
and bundle install
, otherwise bundle exec rspec
won't work. If you want to run your Rspec tests with a command other than bundle exec rspec
, you can configure the command with the rubyTestExplorer.rspecCommand
setting.
The extension needs Ruby and the minitest
gem installed (and any other dependencies required by your test suite). It's been tested with Ruby 2.5 and 2.6, and Minitest 5.x. It should work with most recent versions of Ruby and Minitest.
Currently supported:
bundle list
), as well as manual override if necessary.spec/
directory.test/
directory.The following configuration options are available:
Property | Description |
---|---|
rubyTestExplorer.logpanel |
Whether to write diagnotic logs to an output panel. |
rubyTestExplorer.logfile |
Write diagnostic logs to the given file. |
rubyTestExplorer.testFramework |
none , auto , rspec , or minitest . auto by default, which automatically detects the test framework based on the gems listed by Bundler. Can disable the extension functionality with none or set the test framework explicitly, if auto-detect isn't working properly. |
rubyTestExplorer.filePattern |
Define the pattern to match test files by, for example ["*_test.rb", "test_*.rb", "*_spec.rb"] . |
rubyTestExplorer.debuggerHost |
Define the host to connect the debugger to, for example 127.0.0.1 . |
rubyTestExplorer.debuggerPort |
Define the port to connect the debugger to, for example 1234 . |
rubyTestExplorer.debugCommand |
Define how to run rdebug-ide, for example rdebug-ide or bundle exec rdebug-ide . |
rubyTestExplorer.rspecCommand |
Define the command to run RSpec tests with, for example bundle exec rspec , spring rspec , or rspec . |
rubyTestExplorer.rspecDirectory |
Define the relative directory of the specs in a given workspace, for example ./spec/ . |
rubyTestExplorer.minitestCommand |
Define how to run Minitest with Rake, for example ./bin/rake , bundle exec rake or rake . Must be a Rake command. |
rubyTestExplorer.minitestDirectory |
Define the relative location of your test directory, for example ./test/ . |
If the extension doesn't work for you, here are a few things you can try:
bundle install
and that any gems specified in your Gemfile.lock
have been installed (assuming you're using Bundler).parallelize(workers: 1)
in test_helper.rb
, or add PARALLEL_WORKERS=1
to the rubyTestExplorer.minitestCommand
.rubyTestExplorer.logpanel
config setting and take a look at the output in Output > Ruby Test Explorer Log. This should show what the extension is doing and provide more context on what's happening behind the scenes. (You can alternatively use rubyTestExplorer.logfile
to log to a specific file instead).rspec-core
gem. If you're on a version prior to 3.6.0, the extension may not work.spec
directory are configured correctly. By default, tests are run with bundle exec rspec
and the tests are assumed to be in the ./spec/
directory. You can configure these with rubyTestExplorer.rspecCommand
and rubyTestExplorer.rspecDirectory
respectively.testFramework
config may be set to none
or the auto-detect may be failing to determine the test framework. Try setting the testFramework
config to rspec
or minitest
depending on what you want to use.If all else fails or you suspect something is broken with the extension, please feel free to open an issue! :)
You'll need VS Code, Node (any version >= 12 should probably work), and Ruby installed.
git clone https://github.com/connorshea/vscode-ruby-test-adapter
bin/setup
to install dependencies.npm run watch
or start the watch
Task in VS Code to get the TypeScript compiler running.This extension is based on the example test adapter, it may be useful to check that repository for more information. Test adapters for other languages may also be useful references.
There are two groups of tests included in the repository.
bundle exec rake
in ruby
directory.npm run build && npm run package
before you'll be able to successfully run the extension tests. You'll also need to re-run these every time you make changes to the extension code or your tests.You can see .github/workflows/test.yml
for CI configurations.
See the VS Code extension docs for more info.
Before publishing, make sure to update the CHANGELOG.md
file. You also need to be logged in to vsce
. When creating a Personal Access Token to log in, make sure to give it access to all organizations in your Azure DevOps account. Otherwise, it won't work correctly.
vsce publish VERSION
, e.g. vsce publish 1.0.0
will automatically handle creating the git commit and git tag, updating the package.json
, and publishing the new version to the Visual Studio Marketplace. You'll need to manually run git push
and git push --tags
after publishing.
Alternatively, you can bump the extension version with vsce publish major
, vsce publish minor
, or vsce publish patch
.