GitHub に httpreqtest という Node.js で動くクライアントのHTTPリクエスト内容を JSON でそのまま返すスクリプトを公開した。非公開のトリッキーな仕様の API サービスに対して、クライアントを作るにあたり、実装チェックする必要があり勢いで作った。
このリポジトリ tilfin/httpreqtest · GitHub に build pass と coverage バッジを付けたいと思い、Travis CI を導入しテストを走らせ、Coveralls でコードのカバレッジが表示できるようにしたので、それをメモしておく。
テスト
まずテストがなければ始まらないので、Mocha と SuperTest を使ってテストを書いた。 mocha と supertest を npm でインストールし、package.json の devDependencies に保存する。
$ npm install mocha –save-dev
test ディレクトリを掘り、その中にテストコードを書いた jsファイルを置く。 package.json の scripts には { “test”: “mocha” } と記述して、npm test で実行されるようになる。
Travis CI
ブラウザから Travis CI に GitHub アカウントでサインインする。リポジトリ一覧から当該のものをオンにする。これだけ諸々の設定が済みます。 あと、Git リポジトリのルートに .travis.yml を置きます。
.travis.yml
1 | language: node_js |
上記をコミットしてプッシュして、Travis CI をブラウザで開いていると、ビルドおよびテストが実行されます。正常に終了すれば念願の build pass バッジになります。これを README.md に追加しておきましょう。
Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
コードカバレッジ
コードカバレッジについては、先に Coveralls - Test Coverage History & Statistics でセットアップドキュメントを参考する方が良いかもしれない。
最終的に cainus/node-coveralls · GitHub を参照することになる。ここの手順に沿って、
1 | npm install coveralls --save-dev |
Mocha を利用しているの後者を入れたが、後述する Istanbul を利用する際には不要かもしれない。
ここで、カバレッジ測定ツールとして、Blanket.js、JSCoverage を試したがそもそもうまくいかなかった。結局3番目に紹介されている gotwarlost/istanbul · GitHub を試したら、すんなり上手くいったのでこちらを使った。
$ npm install istanbul –save-dev
単にローカルでカバレッジを測定するだけなら、下記で実行できる。
1 | $ ./node\_modules/.bin/istanbul cover ./node\_modules/mocha/bin/_mocha |
ローカルの
1 | $ ./node\_modules/.bin/istanbul cover ./node\_modules/mocha/bin/\_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node\_modules/coveralls/bin/coveralls.js && rm -rf ./coverage |
このようにコマンドが長い(手続きが複数に渡る)ので、見通しやすくするため、Make を導入する。 またカバレッジ測定時にテストも走るため処理を軽くするため、 * テスト実行時にカバレッジ測定も行い * カバレッジ情報を Coveralls に送る の2つに分ける。
Makefile
1 | mocha=./node\_modules/mocha/bin/\_mocha |
Travis CI では上記の Make 処理を呼ぶために、script に make test-cov を成功時に実行される after_success に make coveralls と make clean を呼ぶようにした。
.travis.yml
1 | language: node_js |
ここではまたプッシュはしない。
Coveralls
ブラウザから Coveralls に GitHub アカウントでサインインする。 ADD REPO ボタンからリポジトリを登録するだけ、ほとんど Travis CI と同じだ。 ようやく準備完了で .travis.yml の変更をプッシュする。
GitHub でのプッシュがフックされ、Travis CI にてビルドとテストが走ります。さらに Coveralls にカバレッジ結果が送られます。Travis CI、Coveralls 両方ともブラウズでリアルタイムに進行を確認できます。
tilfin/httpreqtest | Coveralls - Test Coverage History & Statistics
最後に Coveralls のカバレッジバッジを README.md に追加して終わり。
tilfin/httpreqtest · GitHub のようにバッジで状態が表示されます。