読者です 読者をやめる 読者になる 読者になる

codeclimate-test-reporterのv1に対応した

Ruby

はじめに

自分の開発している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:テスト周りの設定を綺麗に書くモチベーションがあまりないこともあり妥協した