この記事は Dark - Developers at Real Kommunity Advent Calendar 2015 - Adventar の8日目として書かれています。
こんにちは。たなあら (@ara_ta3) | Twitter です。
もうちっとだけ続くんじゃ。
Darkというコミュニティのアドベントカレンダーとして書いています。
前置きは #1 の日記を参考に・・・\(^o^)/arata.hatenadiary.com
DarkではSlackを利用していて、そこにはDarkというHubotが存在します。
今日はテスト周りについて話そうと思います。
Dark botは公開していて、だれでもPR投げれるんですが(たぶん)、テストがコケてるのにマージしてしまって動かなくなってしまうと、dark poemを打った返事がなくなってしまい心が廃れてしまいます。
だからテストがコケてる状態でマージできないように設定するのはとても大事です。github.com
※dark poemについてはこちらのちょっとふざけてる記事を御覧ください。
Q. じゃあどうやってるの?
A. テストの実行をTravis CI上で行い、github上でTravis CIがコケてるとマージできないように設定しています。
Travis CIの設定
設定している内容はこの程度です。
language: node_js node_js: - 5.1.0
Travis CIでlanguage: node_jsの設定を行うと、デフォルトでテスト時にnpm installとnpm testが走ります。
設定はこちらを参考に。
Building a Node.js project - Travis CI
そしてnpm test実行時にどんなコマンドが走るかの設定はpackage.jsonで指定することができます。
dark-botでは make install && make test のように設定しています。
make install && make test ??
dark-botではMakefileでnpm等のコマンドをラップしています。
token= team= name= npm=$(shell which npm) mocha=./node_modules/.bin/mocha lint=./node_modules/.bin/coffeelint gulp=./node_modules/.bin/gulp monitoring-code=local credential=./credentials/development .PHONY:test all: install install: $(npm) install test -f settings/poems.json || cp settings/poems.json.sample settings/poems.json test -f settings/relayblog.json || cp settings/relayblog.json.sample settings/relayblog.json start: ./bin/hubot-slack $(credential) --monitoring-code=$(monitoring-code) start-local: ./bin/hubot test-watch: $(gulp) watch test: lint config-check $(mocha) --compilers coffee:coffee-script/register --recursive -R spec test -f settings/hello.json test -f settings/poems.json test -f settings/relayblog.json lint: $(lint) scripts -f lintconfig.json config-check: ./bin/hubot --config-check run-new-channels: ./bin/start-new-channels $(credential)
これによってスクリプトのLINTとhubotの設定確認とmochaによるテストとファイル存在チェックが走ります。
Makefileはいずれかのコマンドの終了コードが1になると途中で失敗として終了してくれるので便利です。