2016-03-21 12 views
6

Bu, renklerin hepsinin normal olarak davrandığı Hspec tabanlı test paketlerini oluşturduğumdan çok çirkin bir şey. Fakat bu projede, tüm test paketlerini bir kerede yürüttüğümde renklerin ortaya çıkmasını sağlayamıyorum. Ben stack test çalıştırdığınızda, So tüm"Yığın sınaması" kullanıldığında, hspec sınama çıktılarım renklendirilmiyor

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

:

Benim project.cabal böyle kurulur

: (özdeş)

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 
    ... 

Ve sonra benim SpecMain.hs dosyalar bu içerirler Testlerim çalışır, ancak çıktı renklendirilmez. stack build --file-watch --test'u çalıştırırsam, testler çalışır, ancak hiç bir hata varsa, çıkışın tamamı kırmızı renktedir. Son olarak, stack test weblog:unit veya stack test weblog:integration çalıştırırsam, renkler tam olarak olması gerektiği gibi sonuçlanır. Başlıklar beyazdır, geçen testler yeşildir, başarısız testler kırmızıdır ve bekleyen testler sarıdır.

Etkin geliştirme yapıyorum, stack build --file-watch --test'a bağımlıyım, ancak doğru olması için renklere gerçekten ihtiyacım var.

Neler olup bittiğine dair herhangi bir fikriniz var mı, bunu nasıl düzeltebilirim veya hangi ek bilgileri sağlamalıyım?

+2

Hm, hspec-discover ve Stack 1.0.4 kullanmayan bir varyant ile çoğaltılamaz. Hangi kabuktan bahsediyorsunuz? Ayrıca, çıkışı manuel olarak "--test-arguments" --color "' ile renklendirmeyi denediniz mi? – Zeta

+0

Bu ilginç. yığın testi - test-argümanlar "- renkli" 'çalışır. Bu yardımcı olacak, ancak şu andaki projemin diğerlerinden nasıl farklı olduğu konusunda beni şaşırtıyor. –

cevap

4

Varsayılan olarak, hspec yalnızca çıktı a terminal üzerinde gösterildiğinde ve TERM ortam değişkeni "dumb" (veya ayarlanmamış) olduğunda renkleri kullanır. Ortam değişkeni "dumb" olarak ayarlanmadıkça, büyük olasılıkla terminal algılama ile ilgili bir şey olması muhtemeldir.

Her iki durumda da stack build sen --test-arguments test paketleri için argümanlar kullanmaya olanak sağlar ve hspec--color ve varsayılan davranışı üzerine --no-color dahil olmak üzere birçok komut satırı argümanları, yorumlar. Bu nedenle, renkleri zorlayabilirsiniz: bunu bir seferde test etmek birden fazla paket verince

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

Eh, bu o değil. Terminal "xterm-256color" olarak ayarlanmıştır. Aynı terminalde başka bir projeye gidersem, 'yığın testi' renkleri beklediğim gibi görüntüler. Fark, çalışma projesinin stack resolver 3.15 çalıştırması ve bozuk projenin stack resolver'ı çalıştırmasıdır. 5.3 –

+0

@ SavanniD'Gerinel, bu davranışı yeniden oluşturamıyorum. [Mcve] sağlayabilir misiniz? – Zeta

+0

Bu aslında renkli çıktı üretir, ancak yığın testi dediğimde varsayılan olarak olmasını isterim. Bunu arşivlemek için bir yol biliyor musunuz (belki de bir şekilde stack.yaml dosyasında yazabilirsiniz)? 'yap: test argümanlarını denedim: [" --color "]' ancak işe yaramadı – user3637541

0

Stack Gördüğünüz davranışı kullanır. Genellikle, bu, stack.yaml dosyanızın paketlerinin stanzalarında listelenen birden fazla konumunuz olduğu için olur. Bir extra-dep olarak paketler dörtlük bir konuma ancak tüm işaretlerseniz

# 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. 

, yığın onun tek paket davranışına geri döner: yığının

Son versiyonları otomatik oluşturulan stack.yaml dosyasında aşağıdaki söz test ederken ve renklendirilmiş test sonuçlarınızı beklediğiniz gibi gösterir.

İlgili konular