サンドボックス環境で hspec をセットアップする方法

  • 15
    Like
  • 2
    Comment
More than 1 year has passed since last update.

なんどか Haskell プロジェクトを作る中で良い感じのセットアップ方法がわかってきたので書き置きしておきます。
Haskell 周りの進化は速いので今後変わる可能性もあります。なのでこの記事から年月を感じる場合、新しい情報を探すことをおすすめします。

サンドボックス環境

cabal hell あるいは cabal dependincy hell という言葉は重みがあります。なので、回避するためにサンドボックス環境が推奨されています。

いまのところ

  • cabal-dev
  • hsenv
  • cabal sandbox

の3つくらいが有名です。cabal-dev はそろそろ他の2種に置き換えられるみたいです(雰囲気)。

で、hsenv は処理系の切り離しもできて便利そうなんですが、ここでは global にインストールされているパッケージを(おそらく)使いまわせる cabal sandbox を使ってみます。おすすめがあれば教えてください…

hspec

みんな大好き BDD ツールです。

セットアップ&実行方法

まず .cabal ファイルを作成します。お手元のプロジェクトで cabal init すると手に入ります。質問に答えていきましょう。

次に hspec の cabal ファイル を参考にしながら自分のプロジェクトの .cabal ファイルに test-suite spec を追加します。この設定の ghc-options はワーニングレベルでアウトになるので -Wall は削除しても良いです。

だいたいかけたらコマンド発行していきましょう。

  • cabal sandbox init サンドボックス環境を作成します。たぶん冪等性あり。
  • cabal update アップデートしてない場合
  • cabal install --enable-tests --only-dependencies これでテスト用を含めて依存パッケージをインストールします。
  • cabal configure --enable-tests
  • cabal build これでアプリケーションコードとテストコードがコンパイルされます。
  • cabal test これでテストが走ります。

cabal build はコンパイル済みのものは無視してくれるので、その後はソースコードを書き換えたら cabal build && cabal test を打つだけで良いです。

参考

ぼくが自分のプロジェクトで書いてる .cabal ファイルへのリンクを置いておきます。多少参考になると思います。

参考資料