ハスケルの初心者はここにあります。テストスイートをスタックで実行するための慣習的な方法
.cabal
ファイルで定義したテストスイートを実行するには、苦労しています。 .cabal
ファイルにtest-suite
セクションを追加すると、私はstack runtests
のような1つのコマンドですべてを実行できると期待します。
私が見つけた最良の答えはこの1つである: Haskell Stack Ghci test-suiteはあなたが
stack ghci --test module:test:libtests
を実行するために、しかし、私を刺激し、私がやって良い方法がなければならないと思い二つのものがあるしていることを示唆していますそれ。
stack ghci --test module:test:libtests
を明示的に呼び出すのは面倒です。プロジェクトが大きくなったときにテストスイートが増えたら、私はそれをしたくありません。- さらに悪いことに、私は対話セッションに終わり、
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
で実行中のテストは決して言及されません。
あなたの.cabalを投稿することはありますか?あなたはちょうど 'スタックテスト'を実行することができるはずです – Zpalmtree
これは実際に私が後にしたものです。私はスタックテストが私が望むことをしなければならないことを知らなかった。ありがとうございました! – StarSheriff
@Zpalmtreeは自由に回答を追加できます。 – StarSheriff