Add "echo" as logger

This allow to test ouput, and specify ouput other then os.Stdout
This commit is contained in:
Mikołaj Pęczkowski 2021-11-07 19:58:49 +01:00
parent 23e4547e52
commit 5fd9bc851b
6 changed files with 315 additions and 117 deletions

151
echo/echo_test.go Normal file
View file

@ -0,0 +1,151 @@
package echo
import (
"fmt"
"os"
"testing"
)
type ExpectedMessageTester struct {
expectedMessage string
}
func (emt ExpectedMessageTester) Write(p []byte) (n int, err error) {
msg := string(p)
if msg != emt.expectedMessage {
return 0, fmt.Errorf("expected to get \"%v\", instead of this got \"%v\"", msg, emt.expectedMessage)
}
return 0, nil
}
func TestOverwriteColor(t *testing.T) {
Color(false)
if useColor {
t.Error("Expected that \"useColor\" will be false")
}
Color(true)
if !useColor {
t.Error("Expected that \"useColor\" will be true")
}
}
func TestOverwriteWriter(t *testing.T) {
Output(os.Stderr)
if output != os.Stderr {
t.Error("Expected to receive addresses on os.Stderr")
}
Output(os.Stdout)
if output != os.Stdout {
t.Error("Expected to receive addresses on os.Stdout")
}
}
func TestErrorfMsgWithoutColor(t *testing.T) {
useColor = false
output = ExpectedMessageTester{
expectedMessage: "Error: test message\n",
}
err := ErrorfMsg("test message")
if err != nil {
t.Error(err)
}
}
func TestErrorfMsgWithColor(t *testing.T) {
useColor = true
output = ExpectedMessageTester{
expectedMessage: "\033[31mError:\033[0m test message\n",
}
err := ErrorfMsg("test message")
if err != nil {
t.Error(err)
}
}
func TestInfoMsgFWithoutColor(t *testing.T) {
useColor = false
output = ExpectedMessageTester{
expectedMessage: "Info: test message\n",
}
err := InfoFMsg("test message")
if err != nil {
t.Error(err)
}
}
func TestInfoMsgFWithColor(t *testing.T) {
useColor = true
output = ExpectedMessageTester{
expectedMessage: "\033[34mInfo:\033[0m test message\n",
}
err := InfoFMsg("test message")
if err != nil {
t.Error(err)
}
}
func TestGreenMessageWithoutColor(t *testing.T) {
useColor = false
output = ExpectedMessageTester{
expectedMessage: "test message\n",
}
err := GreenMessageF("test message")
if err != nil {
t.Error(err)
}
}
func TestGreenMessageWithColor(t *testing.T) {
useColor = true
output = ExpectedMessageTester{
expectedMessage: "\033[32mtest message\033[0m\n",
}
err := GreenMessageF("test message")
if err != nil {
t.Error(err)
}
}
func TestYellowMessageWithout(t *testing.T) {
useColor = false
output = ExpectedMessageTester{
expectedMessage: "test message\n",
}
err := YellowMessageF("test message")
if err != nil {
t.Error(err)
}
}
func TestYellowMessageWithColor(t *testing.T) {
useColor = true
output = ExpectedMessageTester{
expectedMessage: "\033[33mtest message\033[0m\n",
}
err := YellowMessageF("test message")
if err != nil {
t.Error(err)
}
}
func TestRedMessageWithout(t *testing.T) {
useColor = false
output = ExpectedMessageTester{
expectedMessage: "test message\n",
}
err := RedMessageF("test message")
if err != nil {
t.Error(err)
}
}
func TestRedMessageWithColor(t *testing.T) {
useColor = true
output = ExpectedMessageTester{
expectedMessage: "\033[31mtest message\033[0m\n",
}
err := RedMessageF("test message")
if err != nil {
t.Error(err)
}
}