Мне нравится, когда тестовые тесты на терминале/консоли фактически показывают их вывод в красном или зеленом тексте. Кажется, что многие библиотеки тестирования, доступные для Go, имеют это. Тем не менее, я хотел бы просто использовать пакет тестирования по умолчанию, который поставляется с Go. Есть ли способ раскрасить его на красный и зеленый?
Выходы
Ответ 1
Вы можете создать оболочку оболочки script для этого и покрасить ее с помощью последовательности выделения цвета. Вот простой пример в Linux (я не уверен, как это будет выглядеть на окнах, но я думаю, что есть способ..:))
go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''
Ответ 2
Вы можете использовать grc, общий колоризатор, чтобы разгладить что-либо.
В Debian/Ubuntu установите с помощью apt-get install grc
. На Mac с помощью brew install grc
.
Создайте каталог конфигурации в своем домашнем каталоге:
mkdir ~/.grc
Затем создайте свою персональную конфигурацию grc в ~/.grc/grc.conf
:
# 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, либо ~/.bashrc
или ~/.bash_profile
, либо оба в зависимости от вашей ОС):
alias go=grc go
Теперь вы получаете колоризацию, просто выполнив:
go test -v ./..
Ответ 3
Также есть инструмент под названием richgo, который делает именно это, удобным для пользователя способом.
Ответ 4
Вам все равно понадобится библиотека для добавления цветового кода, например:
- для Windows:
mattn/go-colorable
илиshiena/ansicolor
- для Unix или Windows:
fatih/color
илиkortschak/ct
- для Unix или Windows:
logrusorgru/aurora
(упоминается Иван Черный в комментариях)
Оттуда вы указываете, что хотите цвет (StdOut или StdErr, например в этом примере)
Ответ 5
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()
}
}
Вот остальные. Я добавил зеленые точки здесь.