2016-03-21 12 views
6

Đây là một điều đáng sợ vì tôi đã xây dựng các bộ thử nghiệm dựa trên Hspec, trong đó tất cả các màu đều hoạt động bình thường. Nhưng trong dự án này, tôi không thể có được màu sắc xuất hiện khi chạy tất cả các bộ thử nghiệm cùng một lúc.Khi sử dụng "kiểm tra ngăn xếp", đầu ra kiểm tra hspec của tôi không được tô màu

project.cabal tôi được thiết lập như thế này:

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

Và sau đó SpecMain.hs tác phẩm của tôi (giống hệt nhau) chứa này:

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

Vì vậy, khi tôi chạy stack test, tất cả các thử nghiệm của tôi chạy, nhưng đầu ra không được tô màu. Nếu tôi chạy stack build --file-watch --test, các thử nghiệm sẽ chạy, nhưng nếu có bất kỳ lỗi nào thì tất cả đầu ra có màu đỏ. Cuối cùng, nếu tôi chạy stack test weblog:unit hoặc stack test weblog:integration thì màu sẽ kết thúc chính xác như chúng cần. Tiêu đề có màu trắng, các thử nghiệm đi qua có màu xanh lục, các thử nghiệm không có màu đỏ và các thử nghiệm đang chờ xử lý có màu vàng.

Khi tôi đang phát triển tích cực, tôi có xu hướng phụ thuộc vào stack build --file-watch --test, nhưng tôi thực sự cần màu sắc phù hợp.

Cho bất kỳ ai trong số các bạn biết điều gì đang diễn ra, cách tôi có thể khắc phục điều này hoặc thông tin bổ sung nào tôi cần cung cấp?

+2

Hm, không thể sao chép bằng biến thể không sử dụng khám phá hspec và Stack 1.0.4. Điều đó đang được nói, bạn sử dụng vỏ nào? Ngoài ra, bạn đã thử tô màu đầu ra bằng tay với '--test-arguments '--color" '? – Zeta

+0

Điều đó thật thú vị. 'stack test --test-arguments" --color "' hoạt động. Điều này sẽ giúp, nhưng nó khiến tôi băn khoăn về cách dự án hiện tại của tôi khác với dự án khác. –

Trả lời

4

Theo mặc định, hspec sẽ chỉ sử dụng màu khi đầu ra được hiển thị trên a terminal và khi biến môi trường TERM không phải là "dumb" (hoặc không được đặt). Trừ khi bạn đặt biến môi trường thành "dumb", có khả năng là có sự cố xảy ra với phát hiện thiết bị đầu cuối.

Dù bằng cách nào, stack build phép bạn sử dụng đối số cho dãy phòng thử nghiệm với --test-arguments, và hspec giải thích một vài đối số dòng lệnh, bao gồm --color--no-color đó ghi đè lên hành vi mặc định. Do đó, bạn có thể buộc màu sắc:

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

Vâng, đó không phải là nó. Thiết bị đầu cuối được đặt thành 'xterm-256color'. Nếu tôi đi đến một dự án khác trong cùng một thiết bị đầu cuối, 'stack test' sẽ hiển thị màu sắc chính xác như tôi mong đợi. Sự khác biệt là dự án làm việc chạy stack resolver 3.15 và dự án bị hỏng chạy stack resolver 5.3 –

+0

@ SavanniD'Gerinel một lần nữa, tôi không thể tái tạo hành vi đó. Bạn có thể cung cấp [mcve] không? – Zeta

+0

Điều này tạo ra sản lượng màu thực sự, nhưng tôi whoud như nó được mặc định khi tôi gọi kiểm tra ngăn xếp. Bạn có biết một cách để (có thể đặt nó bằng cách nào đó trong stack.yaml) để lưu trữ này? Tôi đã thử 'build: đối số thử nghiệm: [" --color "]' nhưng nó không hoạt động – user3637541

0

Ngăn xếp sử dụng hành vi bạn thấy khi bạn tặng nhiều gói để kiểm tra cùng một lúc. Thông thường, điều này xảy ra bởi vì bạn có nhiều vị trí được liệt kê trong các gói của tệp stack.yaml của bạn.

các phiên bản gần đây của chồng đề cập đến sau đây trong các tính năng tự động tạo ra stack.yaml file:

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

Nếu bạn đánh dấu tất cả ngoại trừ một vị trí trong các gói câu kệ như một extra-dep, chồng sẽ trở lại hành vi đơn gói của nó khi thử nghiệm và hiển thị kết quả thử nghiệm được tô màu như bạn mong đợi.

Các vấn đề liên quan