获取 Stack 以将测试套件名称作为 --test-arguments 的一部分传递
Get Stack to pass test suite name as part of --test-arguments
使用 cabal 可以建立一个连续构建,以许多 CI 系统可以接受的格式记录测试 successes/failures,命令如下:
cabal test '--test-option=--jxml=test-results/$test-suite.xml'
这里重要的部分是 $test-suite
被替换为测试的名称,以便不同的测试将其结果放入不同的文件中。
当我使用堆栈时,所有测试都从字面上获得传递给它们的选项 --jxml=test-results/$test-suite.xml
,因此最终结果是测试会覆盖彼此的结果。
有没有什么方法可以 运行 我所有的测试都用 stack
,这样我就可以告诉每个测试套件一个不同的地方来写他们的结果?
我什至会接受一些为我解析 cabal 文件并告诉我有哪些测试套件的堆栈命令,因为这样我就可以在 bash 中编写一个循环,一次调用每个测试。
stack test --test-arguments="--jxml=test-results/$test-suite.xml"
I'd even accept some stack command that parsed the cabal file for me and told me what test suites there are, because then I could script a loop in bash calling each test one at a time.
如果您愿意这样做,stack ide targets
将 return 一个目标列表,您可以从中进行一些攻击以获得测试套件列表。像这样:
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
使用 cabal 可以建立一个连续构建,以许多 CI 系统可以接受的格式记录测试 successes/failures,命令如下:
cabal test '--test-option=--jxml=test-results/$test-suite.xml'
这里重要的部分是 $test-suite
被替换为测试的名称,以便不同的测试将其结果放入不同的文件中。
当我使用堆栈时,所有测试都从字面上获得传递给它们的选项 --jxml=test-results/$test-suite.xml
,因此最终结果是测试会覆盖彼此的结果。
有没有什么方法可以 运行 我所有的测试都用 stack
,这样我就可以告诉每个测试套件一个不同的地方来写他们的结果?
我什至会接受一些为我解析 cabal 文件并告诉我有哪些测试套件的堆栈命令,因为这样我就可以在 bash 中编写一个循环,一次调用每个测试。
stack test --test-arguments="--jxml=test-results/$test-suite.xml"
I'd even accept some stack command that parsed the cabal file for me and told me what test suites there are, because then I could script a loop in bash calling each test one at a time.
如果您愿意这样做,stack ide targets
将 return 一个目标列表,您可以从中进行一些攻击以获得测试套件列表。像这样:
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