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?
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")/''
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:
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 ./..
Il existe également un outil appelé richgo qui fait exactement cela de manière conviviale.
Vous auriez encore besoin d’une bibliothèque pour ajouter un code d’échappement de couleur comme:
mattn/go-colorable
ou shiena/ansicolor
fatih/color
ou kortschak/ct
logrusorgru/aurora
(mentionné par Ivan Black dans les commentaires )À partir de là, vous spécifiez ce que vous voulez colorer (StdOut ou StdErr, comme dans cet exemple )
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 .