Pukiwiki2md を公開するときに README.md にバッジを貼りたかったのでよいかんじの Coveralls の導入を調べたのでそのメモ書き。

手元ではすでに SimpleCov を使っているし、あまりプロダクトのコードへ干渉されるのはうれしくない。そこで Ruby on Rails の導入に書いてある Rake task として導入する方法を使ってみる。

今回は gem だったから pukiwiki2md.gemspec へ追加したけれど、通常だと Gemfile へ coveralls gem を追加することになる。

gem 'coveralls', require: false

今回、CI は TravisCI を使う。.converalls.yml ファイルへ次のように記入する。

service_name: travis-ci

test_helper を汚したり、普段使わない Coveralls が呼ばれるのは気持ち悪いので Rakefile に Minitest の test タスクへの依存関係を追加して必要なときに明示的に coveralls を使うようにする (Rake task レベルでの依存も気持ち悪ければ別ファイルで用意すればいいのだけど、今回はそこまではしなかった)。

require 'coveralls/rake/task'
Coveralls::RakeTask.new
task :test_with_coveralls => [:test, 'coveralls:push']

.travis.yml で Travis で CI 時には Coveralls を呼び出すようにする。

script: bundle exec rake test_with_coveralls

ちなみに、Rakefile の全体はこんなかんじ。

require "bundler/gem_tasks"
require "rake/testtask"
require 'rake/clean'
require 'coveralls/rake/task'

Rake::TestTask.new(:test) do |t|
  t.libs << "test"
  t.test_files = FileList['test/**/*_test.rb']
  t.options = '-p'
end
Coveralls::RakeTask.new
CLOBBER.include('coverage')

task :test_with_coveralls => [:test, 'coveralls:push']
task :default => :test

options の -p は Minitest でテスト結果を Fabulous run にするための魔法。

これで、こんな風にバッジの表示ができるようになった。

coverage