堆栈测试输出在 MINGW64 上出现乱码
Stack test output garbled on MINGW64
我 运行宁 GHC 在 Windows 10 上使用 Stack,并在我的大部分日常工作流程中使用 Git Bash (MINGW64)。这包括使用 GHC 和 GHCi,它们通常工作正常。
然而,当我从 MINGW64 运行 stack test
时,输出被 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
) 运行 stack test
,它会正确显示:
我想继续使用我的 (Git) Bash 控制台,而不是必须使用两个单独的控制台 windows,所以:
- 是否可以在 MINGW64 中为
stack test
正确渲染颜色?
- 或者,我可以关闭
stack test
的 ANSI 着色,以便至少更容易阅读输出吗?
我也试过 运行 stack --color never test
的变体,但似乎没有任何区别。
可以像这样将参数传递给测试可执行文件:
stack test --test-arguments "--plain"
--plain
是测试框架中删除颜色的选项,而 --color never
来自 tasty.
我在 Windows 10,Git 2.17.0 上遇到了同样的问题,MINGW64 作为 Git Bash shell。在 运行 "php artisan tinker" 之前,颜色都很好,之后颜色停止,突然所有输出都被 ANSI 颜色代码弄乱了。
我的解决方案原来是(令我惊讶的是它起作用了): 运行 Bash inside Git Bash shell.
之前:
$ 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 等)都试过了,差别不大。
我 运行宁 GHC 在 Windows 10 上使用 Stack,并在我的大部分日常工作流程中使用 Git Bash (MINGW64)。这包括使用 GHC 和 GHCi,它们通常工作正常。
然而,当我从 MINGW64 运行 stack test
时,输出被 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
) 运行 stack test
,它会正确显示:
我想继续使用我的 (Git) Bash 控制台,而不是必须使用两个单独的控制台 windows,所以:
- 是否可以在 MINGW64 中为
stack test
正确渲染颜色? - 或者,我可以关闭
stack test
的 ANSI 着色,以便至少更容易阅读输出吗?
我也试过 运行 stack --color never test
的变体,但似乎没有任何区别。
可以像这样将参数传递给测试可执行文件:
stack test --test-arguments "--plain"
--plain
是测试框架中删除颜色的选项,而 --color never
来自 tasty.
我在 Windows 10,Git 2.17.0 上遇到了同样的问题,MINGW64 作为 Git Bash shell。在 运行 "php artisan tinker" 之前,颜色都很好,之后颜色停止,突然所有输出都被 ANSI 颜色代码弄乱了。
我的解决方案原来是(令我惊讶的是它起作用了): 运行 Bash inside Git Bash shell.
之前:
$ 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 等)都试过了,差别不大。