【问题标题】:How do I run the tests that are part of an installed/installing Cabal package?如何运行作为已安装/安装 Cabal 软件包一部分的测试?
【发布时间】:2015-10-09 14:26:42
【问题描述】:

我有一个从 Hackage 安装的 Haskell 包,使用 cabal 并希望运行作为该包一部分的测试套件,但从 cabal 文档中我不清楚如何这样做。

我试过了:

cabal install --reinstall --enable-tests --run-tests the-package

及其各种组合和排列,但似乎没有运行测试:我没有得到关于测试运行的报告,并且没有生成我知道测试应该产生的输出。

如何运行已安装的cabal 包或我正在安装的包中的测试?

【问题讨论】:

  • 可能是cabal test the-package?
  • @recursion.ninja:我也试过了,但这似乎有点离题:Package has never been configured. Configuring with default flags. If this fails, please run configure manually. cabal: No cabal file found. Please create a package description file <pkgname>.cabal
  • 你说得对,事情没那么简单。请参阅我的答案以获得更强大的解决方案。
  • 可能有a known bug

标签: haskell testing cabal package-managers cabal-install


【解决方案1】:

--run-tests 标志在cabal 的当前版本中似乎不起作用。 --enable-tests 标志不再作为cabal 的新功能运行测试。在问题解决之前,您可以手动通过执行以下操作来验证包是否通过了它的测试套件:

  1. 使用cabal下载包源
  2. 使用cabal 在沙盒中构建包
  3. 使用cabal 在沙盒中运行测试

使用这一系列 cabal 命令运行 the-package 的测试:

cabal get the-package
cd the-package*
cabal sandbox init
cabal install --dependencies-only
cabal configure --enable-tests
cabal build
cabal test
cd ../
rm -r the-package*

或者使用这个等效的单行:

cabal get the-package && cd the-package* && cabal sandbox init && cabal install --dependencies-only && cabal configure --enable-tests && cabal build && cabal test && cd ../ && rm -r the-package*

【讨论】:

  • 是的,我明白了。但是有没有办法简单地对已安装的软件包就地运行测试? install --enable-testsinstall --run-tests 有什么作用——什么都不做?
  • @raxacoricofallapatorius 您确定该软件包的.cabal 文件中有一个测试套件吗?我在一个包 (tasty) 上cabal install --run-tests,我知道它没有与之关联的测试套件,并且它没有输出没有运行测试的失败/警告消息。它只是默默地结束了。
  • 是的,it's there
  • 我刚刚尝试使用cabal install megaparsec --run-tests which also has a test suite,它在没有运行测试的情况下完成。很奇怪,可能是cabal 的bug?
  • 是的,也许。当然,甚至没有像文档中描述的那样发生。
猜你喜欢
  • 1970-01-01
  • 2016-08-03
  • 2012-12-14
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 2022-01-17
相关资源
最近更新 更多