unit-testing - 使用 "stack test"时,我的 hspec 测试输出未着色

标签 unit-testing haskell haskell-stack

这是一件令人愤怒的事情,因为我已经构建了基于 Hspec 的测试套件,其中颜色都表现正常。但是在这个项目中,当我一次运行所有测试套件时,我无法让颜色出现。

我的 project.cabal 是这样设置的:

test-suite unit
  type:               exitcode-stdio-1.0
  main-is:            SpecMain.hs
  hs-source-dirs:     tests/unit
  other-modules:      WikiSpec
  default-language:   Haskell2010
  ghc-options:        -Wall -fno-warn-orphans -threaded
  build-depends:      base                    >=4.6
  ...

test-suite integration
  type:               exitcode-stdio-1.0
  main-is:            SpecMain.hs
  hs-source-dirs:     tests/integration, webapp
  other-modules:      ApiSpec
  default-language:   Haskell2010
  ghc-options:        -Wall -fno-warn-orphans -threaded
  build-depends:      base                    >=4.6
  ...

然后我的 SpecMain.hs 文件(相同)包含以下内容:
{-# OPTIONS_GHC -F -pgmF hspec-discover #-}

所以,当我运行 stack test ,我的所有测试都运行了,但输出没有着色。如果我运行 stack build --file-watch --test ,测试运行,但如果有任何失败,那么所有的输出都是红色的。最后,如果我运行 stack test weblog:unitstack test weblog:integration ,那么颜色最终会完全符合它们应有的样子。标题是白色的,通过的测试是绿色的,失败的测试是红色的,待定的测试是黄色的。

当我进行积极开发时,我倾向于依赖 stack build --file-watch --test ,但我真的需要正确的颜色。

你们有谁知道发生了什么,我该如何解决这个问题,或者我需要提供哪些额外信息?

最佳答案

默认情况下,hspec 只会在输出显示在 a terminal 时使用颜色。当环境变量TERM不是 "dumb" (或未设置)。除非您将环境变量设置为 "dumb" ,很可能是终端检测出了问题。

无论哪种方式,stack build使您能够使用 --test-arguments 的测试套件的参数, 和 hspec解释几个命令行参数,包括 --color--no-color覆盖默认行为。因此,您可以强制使用颜色:

stack test --file-watch --test-arguments "--color"

关于unit-testing - 使用 "stack test"时,我的 hspec 测试输出未着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121438/

相关文章:

c - 如何对 C 进行单元测试(借助代码块)?

java - EJB3Unit 保存功能并没有真正保存我的实体

haskell - 如何在 Haskell 中有效地过滤一对列表?

haskell - Haskell 中具有约束的强制和身份

haskell - stack.yaml 没有从 github 中提取依赖项

haskell - 多个文件使用相同的模块名称 :

javascript - 如何为需要测试其发射的 Angular Directive(指令)进行 Jasmine 单元测试?

java - 总的单元测试执行时间消失了

haskell - ghci 中的持久控制台历史记录

haskell - 堆栈 : Error in $. 标志。_: key "manual"不存在