Subscribed unsubscribe Subscribe Subscribe

HaskellでCIするなら

haskell

函数プログラミングの集いのランチで聞かれたのでHaskellのテスト環境についてまとめます。

  • githubに置いているコードを面倒な設定なしにテストしたい → cabal test + travis-ciがおすすめ
  • クローズドなコードなんだけど、どうしよう → jenkinsでもセットアップしましょう
  • もう少し細かいメトリクスとかとりたい → test-framework + jenkins

cabal test + travis-ci

cabal testに対応したコードをGitHubに置いていて、お手軽に済ませたいならこれが一番です。特徴は、

  • とにかくカンタン
  • 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を使いましょう。