使用堆栈

时间:2015-10-24 15:16:53

标签: haskell testing code-coverage haskell-stack

我想使用Stack生成代码覆盖率报告。我运行命令 等于(省略通过--test-arguments传递给测试套件的选项):

$ stack test --coverage

执行测试,然后输出以下内容:

  

错误:myproject的测试套件"测试"的覆盖率报告没有   考虑任何代码。一个可能的原因是,如果您的测试套件构建   库代码(参见堆栈问题#1008)。它也可能表示存在错误   堆栈或hpc程序。如果你认为你的话,请报告这个问题   报道报告应该有意义的结果。

我认为应该(这会创建空报告)。 GHC选项相同 我的包的所有组件。没有必要使用测试套件来重建 图书馆。毕竟,如果Cabal可以生成报告,Stack应该可以 给定相同的Cabal配置或者我错了吗?

我已经打开了 an issue on堆叠 GitHub按建议回购。

过了一会儿,我决定创建一个好的旧沙箱并生成报告 使用Cabal代替(我真的需要看到报告,你知道)。 它奏效了 以前,但现在我得到了:

$ cabal sandbox init
… <everything OK>
$ cabal update
… <everything OK>
$ cabal install --only-dependencies --enable-tests
… <everything OK>
$ cabal configure --enable-tests --enable-coverage
… <everything OK>
$ cabal build
… <everything OK>
$ cabal test
Running 2 test suites...
Test suite tests: RUNNING...
Test suite tests: PASS
Test suite logged to: dist/test/myproject-0.1.0-tests.log
hpc: can not find HUnit_DDLSMCRs3jyLBDbJPCH01j/Test.HUnit.Lang in ["./.hpc","./dist/hpc/vanilla/mix/myproject-0.1.0","./dist/hpc/vanilla/mix/tests"]

什么?虽然我制作了很多报告,但我从未见过这个 之前。有人在那里决定我今天没有得到那份报告, 好像。

您知道如何使用Stack生成覆盖率报告吗?有没有人 这成功了吗?

2 个答案:

答案 0 :(得分:1)

在我的情况下,我仍然收到此错误。运行:

stack clean
stack test --coverage

解决了问题,正如所报告的那样here

答案 1 :(得分:0)

上游最近的变化修复了它。应该为0.1.7.0及更高版本的用户解决。