与此同时,如何通过堆栈获得可执行文件?

时间:2016-11-29 06:46:41

标签: haskell code-coverage haskell-stack

我的程序包含4个可执行文件,基本上没有库代码。我的测试通过运行带有各种输入文件的可执行文件来工作。

"堆栈测试 - 覆盖"显然没有处理可执行文件。好的,很好,但我无法弄清楚如何做到这一点"手工",就像它一样。

我已尝试将-fhpc添加到我的cabal文件中,它似乎可以正常工作:

  /home/rlpowell/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1/bin/ghc -B/home/rlpowell/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1 --make -no-link -fbuilding-cabal-package -O -static -outputdir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -odir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -hidir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -stubdir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -i -i.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -iapp -i.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -I.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -I.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -optP-include -optP.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen/cabal_macros.h -hide-all-packages -no-user-package-db -package-db /home/rlpowell/.stack/snapshots/x86_64-linux/lts-7.4/8.0.1/pkgdb -package-db /dropbox/src/hblog/.stack-work/install/x86_64-linux/lts-7.4/8.0.1/pkgdb -package-db .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/package.conf.inplace -package-id base-4.9.0.0 -package-id directory-1.2.6.2 -package-id filemanip-0.3.6.3-DFENeGbODv96RwGywUxkEu -package-id filepath-1.4.1.0 -package-id hblog-0.1.0.0-5BseEsncIi47yHhFL2tGbM -package-id pcre-heavy-1.0.0.2-ncNpc9J5vG8YMUKvU47xG -package-id pcre-light-0.4.0.4-IQAaYrFkWFB49U9V8o5b8j -package-id unix-2.7.2.0 -XHaskell2010 app/unphone.hs -threaded -Wall -fhpc -Wall -fhpc -ddump-hi -ddump-to-file

但在运行这样生成的程序后,我找不到.hpc目录或任何.tix文件。

1 个答案:

答案 0 :(得分:1)

在我的计算机上,.hpc文件以.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/结尾,而.tix文件位于工作目录中。

这是一个bash脚本,用于测试没有库代码的可执行文件:

#!/usr/bin/env bash
stack build --coverage
stack exec tests

while getopts ":r" opt; do
    case $opt in
        r)
            hpc markup --hpcdir=.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/ --destdir=coverage_markup tests.tix
            firefox coverage_markup/hpc_index.html
            sleep 120
    esac
done

rm -rf coverage_markup
rm tests.tix
相关问题