cabal测试不打印可执行输出

jam*_*her 10 testing stdout cabal

我有一个cabal包,我有一个test-suite使用该exitcode-stdio-1.0类型的设置,如下所示:

当我使用它时cabal test,cabal不会打印可执行文件的标准输出/标准错误; 它只打印自己的日志信息:

$ cabal test

Running 1 test suites...
Test suite test-foo: RUNNING...
Test suite test-foo: PASS
Test suite logged to: dist/test/foo-0.0.1-test-foo.log
1 of 1 test suites (1 of 1 test cases) passed.
$ 
Run Code Online (Sandbox Code Playgroud)

我想要的输出是在该日志文件中:

$ cat dist/test/foo-0.0.1-test-fo.log 
Test suite test-foo: RUNNING...
HUnit group 1:
  Expected connect: [OK]

         Test Cases  Total      
 Passed  1           1          
 Failed  0           0          
 Total   1           1          
Test suite test-foo: PASS
Test suite logged to: dist/test/foo-0.0.1-test-foo.log
$ 
Run Code Online (Sandbox Code Playgroud)

如何让cabal将此输出打印到自己的标准输出?我在文档中找不到它.

mac*_*ron 13

这是一种方式:

$ cabal test --log=/dev/stdout
Run Code Online (Sandbox Code Playgroud)

但请注意,这不是一个完整的解决方案,因为Cabal将缓冲整个输出并仅在测试程序退出后显示它.

最近的Cabal版本允许输出流:

$ cabal test --show-details=streaming
Run Code Online (Sandbox Code Playgroud)

--show-details = 过滤器

确定终端上是否显示了各个测试用例的结果.可以始终(始终显示),从不(从不显示),失败(仅显示失败的结果)或流式传输(实时显示所有结果).

阅读Cabal用户指南中的更多内容.