web-dev-qa-db-ja.com

golangテスト実行出力の色付け

ターミナル/コンソールテストの実行で実際に出力が赤または緑のテキストで表示されるのが好きです。 Goで利用できるテストライブラリの多くにはこれがあるようです。ただし、Goに付属するデフォルトのテストパッケージを使用したいだけです。出力を赤と緑で色付けする方法はありますか?

31
Elliot Larson

このためのラッパーシェルスクリプトを作成し、色エスケープシーケンスを使用して色を付けることができます。 Linuxの簡単な例を次に示します(これがWindowsでどのように見えるかはわかりませんが、方法があると思います。:))

go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''
51
Makpoc

一般的な色付けツールである 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 ./..

サンプル出力:

screenshot

常にgrcと入力しないようにするには、シェルにエイリアスを追加します(Bashを使用している場合は、OSに応じて~/.bashrcまたは~/.bash_profile、またはその両方):

alias go=grc go

次を実行するだけで色付けができます:

go test -v ./..
45

richgo と呼ばれるツールもあり、これはユーザーフレンドリーな方法でまさにこれを行います。

enter image description here

10

次のようなカラーエスケープコードを追加するには、引き続きライブラリが必要です。

そこから、何を色付けするかを指定します(StdOutまたはStdErr、 この例では など)

4
VonC

rakyll/gotestscreenshot )はこれを行うバイナリです。

例:

$ gotest -v github.com/rakyll/hey
2
twifkak

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()
    }
}

ここに残りがあります 。緑のドットを追加しました こちら

2
bentrevor