connorshea / vscode-ruby-test-adapter

A Ruby test adapter extension for the VS Code Test Explorer
https://marketplace.visualstudio.com/items?itemName=connorshea.vscode-ruby-test-adapter
MIT License
85 stars 52 forks source link
automated-testing minitest rspec ruby vscode vscode-extension vscode-ruby vscode-test-adapter vscode-test-explorer

Ruby Test Explorer

Install it from the VS Code Marketplace.

This is a Ruby Test Explorer extension for the VS Code Test Explorer extension.

An example screenshot of the extension in use

The extension supports the RSpec and Minitest test frameworks.

Setup

RSpec

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.

Minitest

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.

Features

Currently supported:

Configuration

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/.

Troubleshooting

If the extension doesn't work for you, here are a few things you can try:

If all else fails or you suspect something is broken with the extension, please feel free to open an issue! :)

Contributing

You'll need VS Code, Node (any version >= 12 should probably work), and Ruby installed.

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.

Running tests

There are two groups of tests included in the repository.

You can see .github/workflows/test.yml for CI configurations.

Publishing a new version

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.