代码之家  ›  专栏  ›  技术社区  ›  Mark Seemann

MINGW64上的堆栈测试输出乱码

  •  2
  • Mark Seemann  · 技术社区  · 7 年前

    我在Windows 10上使用Stack运行GHC,并在我的大部分日常工作流程中使用Git Bash(MINGW64)。这包括使用GHC和GHCi,这通常效果很好。

    stack test 从MINGW64开始,输出被ANSI颜色代码混淆:

    $ stack test
    UC-0.1.0.0: test (suite: UC-test)
    
    [?25lSorting Group 1:
    
    [2K[1F  prop1: [[92mOK, passed 100 tests[0m]
    
    [2K[1F  prop2: [[92mOK, passed 100 tests[0m]
    
             Properties  Total
     Passed  [92m2[0m           [92m2[0m
     Failed  0           0
     Total   [92m2[0m           [92m2[0m
    [?25h
    

    奇怪的是,如果我跑 从普通Windows控制台( cmd ),正确显示:

    Correctly coloured test output in cmd

    • 是否有可能获得正确渲染的颜色 堆叠测试
    • 堆叠测试 ,这样,至少更容易读取输出?

    stack --color never test ,但这似乎没有什么不同。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Li-yao Xia    7 年前

    参数可以传递给测试可执行文件,如下所示:

    stack test --test-arguments "--plain"
    

    --plain 是在测试框架中删除颜色的选项,而 --color never

        2
  •  1
  •   David Carter    6 年前

    我在Windows 10、Git 2.17.0上也遇到过同样的问题,MINGW64是Git Bash shell。在我运行“php artisan tinker”之前,颜色都很好,之后颜色停止,所有输出都会突然被ANSI颜色代码弄乱。

    我的解决方案是(让我惊讶的是它居然成功了):在Git Bash shell中运行Bash。

    之前:

    $ php artisan tinker
    ?[34mPsy Shell v0.7.2 (PHP 7.1.11 ΓÇö cli) by Justin Hileman?[39m
    >>> exit
    ?[37;41mExit:  Goodbye.?[39;49m
    $
    

    $ bash
    $ php artisan tinker
    Psy Shell v0.7.2 (PHP 7.1.11 — cli) by Justin Hileman
    >>> exit
    Exit:  Goodbye.
    $
    

    这确实是一种变通方法,但很有效。也许这是一个线索,以实际的根本问题。终端类型似乎无关紧要(xterm、xterm-256等)都尝试过,差别不大。