当我从命令行运行phpunit时,控制字符将被打印出来而不是像控制字符那样。看看这个:
PHPUnit 3.6.5 by Sebastian Bergmann.
Configuration read from app\phpunit.xml.dist
...
Time: 1 second, Memory: 12.00Mb
‹[30;42m‹[2KOK (3 tests, 3 assertions)
‹[0m‹[2K
我认为像‹[30;42m<
这样的符号是某种控制字符,应该以不同的方式由控制台使用(定位光标,删除字符等)。
这里有什么不妥?
答案 0 :(得分:11)
这是因为您已将phpunit配置为使用颜色。
<phpunit colors="true"
但遗憾的是,无法在Windows终端上创建彩色输出。
phpunit问题跟踪器上有未解决的问题 to not show those chars on windows where they can't be translated into colors
,我正在为此修补补丁。
现在你要做的就是以太接受它或从你的phpunit.xml配置文件中删除color="true"
。
答案 1 :(得分:11)
或者,只需使用https://github.com/adoxa/ansicon/releases在Windows上获取ansi颜色。
答案 2 :(得分:4)
我最近遇到了同样的问题,试图在Windows 7的git bash中从命令行运行phpunit。在对可能的各种解决方案进行一些研究之后,我决定分享我选择为自己实现的解决方案,这里。
您可以从git bash中过滤出ANSI颜色控制字符。创建一个名为phpunit
的文件(注意:实际的phpunit脚本不在我的路径中,我主要是从intellij运行单元测试)并将它放在$PATH
的任何位置(我更喜欢{{1}我自己,但没有规则):
~/bin
"$@"
告诉bash接受传递给脚本的其余参数并将它们转发给phpunit。 2>&1
redirects stderr to stdout,确保在生成错误输出时生成的任何控制字符也将被过滤掉。
最后,phpunit生成的所有输出都是通过perl传输并运行正则表达式's/(?<=\e\[)2;//g'
,它将删除控制字符。
最终结果是phpunit运行得很好,无论你使用的是什么#!/bin/sh
/path/to/phpunit "$@" 2>&1 | perl -pe 's/(?<=\e\[)2;//g'
设置。
希望这有帮助!
答案 3 :(得分:0)
Thanx Danny,你的回答非常有帮助。
对于想要实现此功能的用户:
在〜/ .bashrc中为phpunit添加一个别名(只需添加以下行)。如果你还没有.bashrc,只需创建一个空文件。
alias phpunit =“〜/ .phpunit.sh”
关闭你的bash并再次打开
答案 4 :(得分:0)
就像他们说的那样,这对我有用。
转到〜/目录中的.bashrc并添加
alias phpunitc="phpunit "$@" 2>&1 | perl -pe 's/(?<=\e\[)2;//g'"
然后我在git bash中使用phpunitc。您发送给phpunit的所有参数也将通过。