运行 堆栈中测试套件的惯用方式
Idiomatic way to run test-suites in stack
Haskell这里是初学者。
我正在努力寻找一种很好的方法来 运行 我在 .cabal
文件中定义的测试套件。鉴于您在 .cabal
文件中添加了 test-suite
部分,我希望您可以 运行 使用单个命令(如 stack runtests
.
所有这些部分
我找到的最佳答案是这个:
提示你必须运行
stack ghci --test module:test:libtests
但是,有两件事让我很恼火,我认为一定有更好的方法。
- 显式调用
stack ghci --test module:test:libtests
很麻烦。如果当项目变大时我有更多的测试套件,我不想这样做。
- 更糟糕的是,我最终进入了交互式会话,不得不自己打电话给
main
。这不会缩放。
没有更好的方法来 运行 堆栈中项目的测试套件吗?当然我可以做一些 shell 脚本,但是嘿堆栈应该 知道 如何 运行 我的测试,我在 .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: example@example.com
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
并且也有记录。
但是,对于关注 Haskell本书的人来说,这可能并不那么明显。由于某种原因,测试章节中的所有测试都以繁琐的方式执行,并且从未提及使用 stack test
进行的 运行ning 测试。
stack test
运行位于 .cabal 文件中的测试。如果需要,它会运行 stack build
,因此您无需在测试前手动构建。
进一步了解:https://docs.haskellstack.org/en/stable/GUIDE/#stack-test
Haskell这里是初学者。
我正在努力寻找一种很好的方法来 运行 我在 .cabal
文件中定义的测试套件。鉴于您在 .cabal
文件中添加了 test-suite
部分,我希望您可以 运行 使用单个命令(如 stack runtests
.
我找到的最佳答案是这个:
stack ghci --test module:test:libtests
但是,有两件事让我很恼火,我认为一定有更好的方法。
- 显式调用
stack ghci --test module:test:libtests
很麻烦。如果当项目变大时我有更多的测试套件,我不想这样做。 - 更糟糕的是,我最终进入了交互式会话,不得不自己打电话给
main
。这不会缩放。
没有更好的方法来 运行 堆栈中项目的测试套件吗?当然我可以做一些 shell 脚本,但是嘿堆栈应该 知道 如何 运行 我的测试,我在 .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: example@example.com
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
并且也有记录。
但是,对于关注 Haskell本书的人来说,这可能并不那么明显。由于某种原因,测试章节中的所有测试都以繁琐的方式执行,并且从未提及使用 stack test
进行的 运行ning 测试。
stack test
运行位于 .cabal 文件中的测试。如果需要,它会运行 stack build
,因此您无需在测试前手动构建。
进一步了解:https://docs.haskellstack.org/en/stable/GUIDE/#stack-test