web-dev-qa-db-fra.com

colorisation de la sortie du test golang

J'aime bien quand les tests de terminaux/consoles montrent leur sortie en texte rouge ou vert. Il semble que de nombreuses bibliothèques de test disponibles pour Go possèdent cela. Cependant, j'aimerais simplement utiliser le package de test par défaut fourni avec Go. Y a-t-il un moyen de coloriser sa sortie en rouge et vert?

29
Elliot Larson

Vous pouvez créer un script shell pour cela et le colorer à l'aide de la séquence d'échappement couleur. Voici un exemple simple sous Linux (je ne suis pas sûr de ce que cela donnerait sous Windows, mais je suppose qu'il existe un moyen .. :))

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

Vous pouvez utiliser grc , un colorant générique, pour colorier n'importe quoi.

Sur Debian/Ubuntu, installez avec apt-get install grc. Sur un Mac avec brew install grc.

Créez un répertoire de configuration dans votre répertoire personnel:

mkdir ~/.grc

Puis créez votre configuration personnelle dans ~/.grc/grc.conf:

# Go
\bgo.* test\b
conf.gotest

Créez ensuite une configuration de coloration du test Go dans ~/.grc/conf.gotest, telle que:

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

Vous pouvez maintenant exécuter des tests Go avec:

grc go test -v ./..

Exemple de sortie:

 screenshot

Pour éviter de saisir grc tout le temps, ajoutez un alias à votre shell (si vous utilisez Bash, ~/.bashrc ou ~/.bash_profile ou les deux, selon votre système d'exploitation):

alias go=grc go

Maintenant, vous obtenez la colorisation simplement en exécutant:

go test -v ./..
42
Alexander Staubo

Il existe également un outil appelé richgo qui fait exactement cela de manière conviviale.

 enter image description here

10
Alexander Staubo

Vous auriez encore besoin d’une bibliothèque pour ajouter un code d’échappement de couleur comme:

À partir de là, vous spécifiez ce que vous voulez colorer (StdOut ou StdErr, comme dans cet exemple )

4
VonC

rakyll/gotest ( screenshot ) est un binaire qui fait cela.

Exemple:

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

BoltDB a quelques méthodes de test qui ressemblent à ceci:

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

Voici le reste . J'ai ajouté les points verts ici .

1
bentrevor