函数プログラミングの集いのランチで聞かれたのでHaskellのテスト環境についてまとめます。
- githubに置いているコードを面倒な設定なしにテストしたい → cabal test + travis-ciがおすすめ
- クローズドなコードなんだけど、どうしよう → jenkinsでもセットアップしましょう
- もう少し細かいメトリクスとかとりたい → test-framework + jenkins
cabal test + travis-ci
cabal testに対応したコードをGitHubに置いていて、お手軽に済ませたいならこれが一番です。特徴は、
- とにかくカンタン
- セットアップはリポジトリのトップにlanguage: haskellとだけ書いた.travis.ymlというファイルを置いて、travis-ciからONにするだけ。
- http://about.travis-ci.org/docs/user/languages/haskell/ に環境の詳細とサンプルがあります。
- githubにpushしたらすぐにテストしてくれる。
- 誰かがpull requestすると、そのパッチがテストを通るかチェックしてpull requestのコメントに正否の結果をpostしてくれる。
など。
コードがクローズドとか、Haskell Platformのバージョンを変えたいとか、細かいメトリクスをとりたい場合はjenkinsが良いかもしれません。
test-framework + jenkins
travis-ciよりもっとカスタマイズした使い方を望む場合は適当な場所にjenkinsを立てるのがよいかもしれません。
Haskellのテストフレームワークでデファクト感があるtest-frameworkというパッケージにはJUnitと同じ形式のXMLを吐いてくれる機能があり、それを使うとGHCが吐く警告をまとめるようなこともできるみたいです。自分では試してないですが、https://jenkins.serpentine.com/job/aeson/ こんな感じにできるようです。
まとめ
オープンなコードならtravis-ciを使いましょう。