2016-03-21 8 views
6

これは色がすべて正常に動作するHspecベースのテストスイートを構築して以来、しかし、このプロジェクトでは、すべてのテストスイートを一度に実行すると色が表示されません。"スタックテスト"を使用している場合、私の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ファイル(同じ)は、この含まれている:私はstack testを実行したときに、そう

{-# OPTIONS_GHC -F -pgmF hspec-discover #-} 

を、すべてのテストは実行されますが、出力はカラー化されません。 stack build --file-watch --testを実行すると、テストが実行されますが、何らかのエラーが発生した場合は、すべての出力が赤色になります。最後に、stack test weblog:unitまたはstack test weblog:integrationを実行すると、色が正しく表示されます。ヘッダーは白、通過テストは緑、失敗テストは赤、保留テストは黄色です。

私がアクティブな開発をしているときは、私はstack build --file-watch --testに依存する傾向がありますが、本当に正しい色が必要です。

何が起こっているか、どのように修正できるか、追加情報が必要ですか?

+2

Hmは、hspec-discoverとStack 1.0.4を使用しないバリアントでは再生できません。それは、どのシェルを使用していると言われていますか?また、 '--test-arguments" --color "'で出力を色付けしようとしましたか? – Zeta

+0

それは面白いです。 'stack test --test-arguments" --color "'が動作します。これは助けになりますが、私の現在のプロジェクトが他のプロジェクトとどのように違っているか私には分かりません。 –

答えて

4

デフォルトでは、hspecは、出力がa terminalに表示され、環境変数TERM"dumb"でない(または設定されていない)場合にのみ、色を使用します。環境変数を"dumb"に設定しない限り、端末検出で何かが起こっている可能性があります。

いずれかの方法で、stack buildあなたは--test-argumentsでテストスイートの引数を使用することが可能となり、hspecは、デフォルトの動作を上書き--color--no-colorを含むいくつかのコマンドライン引数を、解釈します。したがって、色を強制することができます。

+0

さて、そうではありません。端末は 'xterm-256color'に設定されています。私が同じターミナルの別のプロジェクトに行くと、 'stack test'は私が期待した通り正確に色を表示します。違いは、作業中のプロジェクトはスタックリゾルバ3.15を実行し、破損したプロジェクトはスタックリゾルバ5.3 –

+0

@ SavanniD'Gerinelを再度実行するため、その動作を再現できません。あなたは[mcve]を提供できますか? – Zeta

+0

これは実際に色付きの出力を生成しますが、私はスタックテストを呼び出すときにデフォルトであるようにしています。これをアーカイブする方法を知っていますか(多分stack.yamlに入れてください)?試しました 'build: test-arguments:[" --color "]'しかし、うまくいかなかった – user3637541

0

Stackは、一度に複数のパッケージをテストするときに表示される動作を使用します。通常、これは、stack.yamlファイルのパッケージスタンザに複数の場所がリストされているために発生します。あなたはextra-depとしてパッケージ・スタンザ内の1つの場所が、すべてをマークすると

# A package marked 'extra-dep: true' will only be built if demanded by a 
# non-dependency (i.e. a user package), and its test suites and benchmarks 
# will not be run. This is useful for tweaking upstream packages. 

、スタックはその単一パッケージの動作に戻ります:スタックの

最近のバージョンでは、自動生成さstack.yamlファイルに次のように言及します試してみると、色付けされたテスト結果が期待通りに表示されます。

関連する問題