2017-11-10 4 views
0

ハスケルの初心者はここにあります。テストスイートをスタックで実行するための慣習的な方法

.cabalファイルで定義したテストスイートを実行するには、苦労しています。 .cabalファイルにtest-suiteセクションを追加すると、私はstack runtestsのような1つのコマンドですべてを実行できると期待します。

私が見つけた最良の答えはこの1つである: Haskell Stack Ghci test-suiteはあなたが

stack ghci --test module:test:libtests

を実行するために、しかし、私を刺激し、私がやって良い方法がなければならないと思い二つのものがあるしていることを示唆していますそれ。

  1. stack ghci --test module:test:libtestsを明示的に呼び出すのは面倒です。プロジェクトが大きくなったときにテストスイートが増えたら、私はそれをしたくありません。
  2. さらに悪いことに、私は対話セッションに終わり、main自分自身を呼び出す必要があります。これは縮尺通りではありません。

スタック内のプロジェクトに対してテストスイートを実行するより良い方法はありませんか?もちろん、シェルスクリプトを実行することもできますが、のテストを実行する方法を知り、.cabalファイルのすべてを指定しました。

私はstack runghc --testを試しましたが、それは役に立ちません。

プロジェクトの設定:

. 
├── app 
│   └── Main.hs 
├── LICENSE 
├── README.md 
├── Setup.hs 
├── src 
│   ├── Lib.hs 
│   └── WordNumber.hs 
├── stack.yaml 
├── test 
│   └── Spec.hs 
└── WordNumber.cabal 

WordNumber.cabal

name:    WordNumber 
version:    0.1.0.0 
-- synopsis: 
-- description: 
homepage:   https://github.com/githubuser/WordNumber#readme 
license:    BSD3 
license-file:  LICENSE 
author:    Author name here 
maintainer:   [email protected] 
copyright:   2017 Author name here 
category:   Web 
build-type:   Simple 
extra-source-files: README.md 
cabal-version:  >=1.10 

library 
    hs-source-dirs:  src 
    exposed-modules:  Lib, WordNumber 
    build-depends:  base >= 4.7 && < 5 
    default-language: Haskell2010 

executable wordnumber 
    hs-source-dirs:  app 
    main-is:    Main.hs 
    ghc-options:   -threaded -rtsopts -with-rtsopts=-N 
    build-depends:  base 
        , WordNumber 
    default-language: Haskell2010 

test-suite wordnumber-test 
    type:    exitcode-stdio-1.0 
    hs-source-dirs:  test 
    main-is:    Spec.hs 
    build-depends:  base 
        , WordNumber 
        , hspec 
    ghc-options:   -threaded -rtsopts -with-rtsopts=-N 
    default-language: Haskell2010 

更新: 実は私は答えを自分で見つけていないため少し愚かな感じ。 stack testまたはstack build --testのいずれかであり、これも文書化されています。

しかし、HaskellBookに従っている人にとってはそれほど明白ではないかもしれません。何らかの理由で、テストの章のすべてのテストが厄介な方法で実行され、stack testで実行中のテストは決して言及されません。

+2

あなたの.cabalを投稿することはありますか?あなたはちょうど 'スタックテスト'を実行することができるはずです – Zpalmtree

+0

これは実際に私が後にしたものです。私はスタックテストが私が望むことをしなければならないことを知らなかった。ありがとうございました! – StarSheriff

+0

@Zpalmtreeは自由に回答を追加できます。 – StarSheriff

答えて

関連する問題