获取堆栈以通过测试套件名称作为--test-arguments的一部分

时间:2019-05-02 17:27:26

标签: haskell haskell-stack

使用阴谋集团,可以建立连续的构建,以许多CI系统会接受的格式记录测试成功/失败的命令,例如:

cabal test '--test-option=--jxml=test-results/$test-suite.xml'

这里的重要部分是将$test-suite替换为测试名称,以便不同的测试将其结果放入不同的文件中。

当我使用堆栈时,所有测试实际上都是通过选项--jxml=test-results/$test-suite.xml传递给它们的,因此最终结果是测试覆盖了彼此的结果。

是否可以使用stack运行我的所有测试,以便我可以告诉每个测试套件一个不同的位置来编写其结果?

我什至会接受一些为我解析了cabal文件并告诉我有什么测试套件的堆栈命令,因为这样我就可以在bash中编写一个脚本循环,一次调用每个测试套件。

2 个答案:

答案 0 :(得分:1)

  

我什至会接受一些为我解析了cabal文件并告诉我有什么测试套件的堆栈命令,因为这样我就可以在bash中编写一个脚本循环,一次调用每个测试套件。

如果您愿意屈服于此,stack ide targets将返回目标列表,您可以从中进行一些猛击以获得测试套件列表。像这样:

stack ide targets 2>&1 |
  while IFS=: read pkg type suite; do
    [[ $type = test ]] && stack test ":$suite" --test-arguments="--jxml=test-results/$suite.xml"
  done

答案 1 :(得分:-1)

stack test --test-arguments="--jxml=test-results/$test-suite.xml"