ターミナル/コンソールテストの実行で実際に出力が赤または緑のテキストで表示されるのが好きです。 Goで利用できるテストライブラリの多くにはこれがあるようです。ただし、Goに付属するデフォルトのテストパッケージを使用したいだけです。出力を赤と緑で色付けする方法はありますか?
このためのラッパーシェルスクリプトを作成し、色エスケープシーケンスを使用して色を付けることができます。 Linuxの簡単な例を次に示します(これがWindowsでどのように見えるかはわかりませんが、方法があると思います。:))
go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''
一般的な色付けツールである grc を使用して、何でも色付けできます。
Debian/Ubuntuでは、apt-get install grc
でインストールします。 Macの場合、brew install grc
。
ホームディレクトリにconfigディレクトリを作成します。
mkdir ~/.grc
次に、~/.grc/grc.conf
に個人的なgrc設定を作成します。
# Go
\bgo.* test\b
conf.gotest
次に、次のようなGoテストの色付け設定を~/.grc/conf.gotest
に作成します。
regexp==== RUN .*
colour=blue
-
regexp=--- PASS: .*
colour=green
-
regexp=^PASS$
colour=green
-
regexp=^(ok|\?) .*
colour=Magenta
-
regexp=--- FAIL: .*
colour=red
-
regexp=[^\s]+\.go(:\d+)?
colour=cyan
これでGoテストを実行できます:
grc go test -v ./..
サンプル出力:
常にgrc
と入力しないようにするには、シェルにエイリアスを追加します(Bashを使用している場合は、OSに応じて~/.bashrc
または~/.bash_profile
、またはその両方):
alias go=grc go
次を実行するだけで色付けができます:
go test -v ./..
richgo と呼ばれるツールもあり、これはユーザーフレンドリーな方法でまさにこれを行います。
次のようなカラーエスケープコードを追加するには、引き続きライブラリが必要です。
mattn/go-colorable
または shiena/ansicolor
fatih/color
または kortschak/ct
logrusorgru/aurora
( Ivan Black in コメント )そこから、何を色付けするかを指定します(StdOutまたはStdErr、 この例では など)
BoltDBには、次のようなテストメソッドがあります。
func assert(tb testing.TB, condition bool, msg string, v ...interface{}) {
if !condition {
_, file, line, _ := runtime.Caller(1)
fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...)
tb.FailNow()
}
}
ここに残りがあります 。緑のドットを追加しました こちら 。