あるいはコマンドプロンプトでANSIカラーを表示させる方法。

Windowsのコマンドプロンプトでphpunit --colorsすると、

f:id:iakio:20111216003756p:image

こんな感じになります。ゲンナリです。グリーンにならないならテストに対する意欲も半減です。コマンドプロンプトに色を付けるには、SetConsoleTextAttribute()とかいうWin32APIを使う必要があるらしいです。で、調べてたら、

WindowsのコマンドプロンプトでもANSIカラーを使いたい「wac」 - MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ

こんなのを見つけました。これはANSIエスケープシーケンスを読みこんでSetConsoleTextAttribute()を呼び出してくれるもの。なんですが中を見てみたら結構手抜きの実装で、phpunit --colorsの出力では上手くいきません。

なんでこれを直してやろうかと色々試行錯誤していたら、別の方法を発見しました。

f:id:iakio:20111216004334p:image

パイプでwacじゃなくて単にcatに渡してやればいい。このcatはmsysのcat(\msys\1.0\bin\cat.exe)です。msysGitを使ってればそっち(\Program Files\Git\bin\cat.exe)でも良いと思います。

どこのレイヤでそうなってるのかよくわからないような、当たり前といわれれば当たり前ような解決でした。