使用代码覆盖率运行测试时的Cabal和HPC以及错误

时间:2015-02-09 18:34:26

标签: haskell cabal

我使用Cabal来运行我的测试。

以下是.cabal文件中的配置方式:

test-suite test
    type:           exitcode-stdio-1.0
    main-is:        Test.hs
    build-depends:  base >= 4.7 && < 4.8, containers >=0.5 && <0.6, ghc, test-framework >=0.8 && <0.9, QuickCheck >=2.7 && <2.8, HUnit >=1.2 && <1.3, test-framework-hunit, test-framework-quickcheck2
    default-language:    Haskell2010
    ghc-options:    -Wall -fhpc

第一次运行测试时,一切正常。

但是,如果我更改测试并再次运行它们,我会收到以下错误:

Hpc failure: module mismatch with .tix/.mix file hash number
(perhaps remove test.tix file?)

因此,我需要手动删除.tix文件。

有没有办法摆脱这个问题?

顺便问一下,有没有办法在.tix目录而不是根目录中生成这个dist文件?

如何配置我的Cabal文件以便与HPC配合使用(即在dist目录中生成HTML文件)?

感谢。

2 个答案:

答案 0 :(得分:4)

要使cabal生成代码覆盖率报告,您可以在配置程序包时启用它:

cabal configure --enable-coverage

然后像往常一样运行测试:

cabal test

请注意,您可能需要使用较早--enable-library-coverage的{​​{1}}。此外,cabal已将IIRC hpc整合在cabal中。

答案 1 :(得分:1)

我使用的是GHC 7.8.3和Cabal 1.22.0.0

您可以通过多种方式设置.tix文件的文件路径。

  1. 设置HPCTIXDIR环境变量。 tix文件将在提供的目录中创建。名称将格式化为-.tix 如果该目录不存在,则会创建该目录。

  2. 设置HPCTIXFILE环境变量。将使用您在当前工作目录中提供的文件名创建tix文件。您可以指定文件路径。但是,目录不会被创建。

相关问题