codeclimate-test-reporterのv1に対応した
はじめに
自分の開発しているgemでは、自動テストの実行にTravis CI、(テストカバレッジの計測を含む)コードの品質管理にCode Climateを利用している。
先日、Code Climateにテストカバレッジの計測結果を送信するためのgemであるcodeclimate-test-reporterのv1がリリースされた。
しかし、v0.x系からいくつかの破壊的変更があったようで、テストカバレッジが送信されない状態になっていた。
修正方法
codeclimate-test-reporterのREADMEを読み、ざっと次のような修正を加えた。
- v2へのアップデート時に同じことが起きないように、
gemspec
でcodeclimate-test-reporterのバージョンを1.x系に固定 spec/rails_helper.rb
からcodeclimate-test-reporterに関する記述を取り除く- Travis CIでのテスト実行後にCode Climateにテストカバレッジの計測結果を送信するよう、
.travis.yml
に設定を追加する
具体的な変更点は、gakubuchi*1の差分(以下のリンク)を参照のこと。
※ Rails 5系対応などの修正も含まれているせいで、やや見づらくなっているのが申し訳ないです。
苦労した点
最初、.travis.yml
に次のように書いた。
after_script: - bundle exec codeclimate-test-reporter
これだと、masterへのプルリクエストをトリガーにして実行されたテストのカバレッジが、masterブランチのそれとして送信されているような挙動が見られたので、次のように変更した。
after_script: - '[ ${TRAVIS_EVENT_TYPE} != "pull_request" ] && [ ${TRAVIS_BRANCH} = "master" ] && bundle exec codeclimate-test-reporter'
Travis CI上でどのような環境変数を利用できるかは、Environment Variables - Travis CIを参照すればよい。
おわりに
これがベストな解法だとは思えないけど*2、とりあえず動くようになった。
*1:gakubuchiについてはRailsで静的ページの管理を簡単にするgemを作った - WEB SALADが詳しい
*2:テスト周りの設定を綺麗に書くモチベーションがあまりないこともあり妥協した