🕶️

parallel_rspecをrspecのoptionで実行する

2020/12/28に公開

例えばこんな感じで指定すると実行できないので困った。

bundle exec parallel_rspec -n 4 --only-failures

bundler: failed to load command: parallel_rspec (/home/circleci/project/vendor/bundle/ruby/2.6.0/bin/parallel_rspec)
OptionParser::InvalidOption: invalid option: --only-failures
  /home/circleci/project/vendor/bundle/ruby/2.6.0/gems/parallel_tests-3.4.0/lib/parallel_tests/cli.rb:237:in `parse_options!'
  /home/circleci/project/vendor/bundle/ruby/2.6.0/gems/parallel_tests-3.4.0/lib/parallel_tests/cli.rb:12:in `run'
  /home/circleci/project/vendor/bundle/ruby/2.6.0/gems/parallel_tests-3.4.0/bin/parallel_rspec:9:in `<top (required)>'
  /home/circleci/project/vendor/bundle/ruby/2.6.0/bin/parallel_rspec:23:in `load'
  /home/circleci/project/vendor/bundle/ruby/2.6.0/bin/parallel_rspec:23:in `<top (required)>'

解決法

test-options optionを利用する

bundle exec parallel_rspec -n 4 --test-options '--only-failures'

--test-optionsとは

helpを見るとこのように書かれている

-o, --test-options '[OPTIONS]'   execute test commands with those options

parallel_rspecの中身で利用されているparallel_testsのoptionのうちの一つ。

parallel_testsはrspecやminitestなどでも利用できるように抽象化されているので、optionはこのように渡すようです。

参考

https://github.com/grosser/parallel_tests/issues/777
https://github.com/grosser/parallel_tests

Discussion