Restructure project directories
Follow the standard of all go projects
This commit is contained in:
parent
741f18efd1
commit
5445ce1ccf
20 changed files with 39 additions and 42 deletions
72
internal/echo/echo.go
Normal file
72
internal/echo/echo.go
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
package echo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
)
|
||||
|
||||
const (
|
||||
ColorReset = "\033[0m"
|
||||
ColorRed = "\033[31m"
|
||||
ColorGreen = "\033[32m"
|
||||
ColorYellow = "\033[33m"
|
||||
ColorBlue = "\033[34m"
|
||||
)
|
||||
|
||||
var (
|
||||
useColor bool = false
|
||||
output io.Writer = os.Stdout
|
||||
)
|
||||
|
||||
func Color(enabled bool) {
|
||||
useColor = enabled
|
||||
}
|
||||
|
||||
func Output(writer io.Writer) {
|
||||
output = writer
|
||||
}
|
||||
|
||||
func ErrorfMsg(format string, a ...interface{}) error {
|
||||
msg := fmt.Sprintf(format, a...)
|
||||
if useColor {
|
||||
msg = fmt.Sprintf("%vError:%v %v", ColorRed, ColorReset, msg)
|
||||
} else {
|
||||
msg = fmt.Sprintf("Error: %v", msg)
|
||||
}
|
||||
return write(msg)
|
||||
}
|
||||
|
||||
func InfoFMsg(format string, a ...interface{}) error {
|
||||
msg := fmt.Sprintf(format, a...)
|
||||
if useColor {
|
||||
msg = fmt.Sprintf("%vInfo:%v %v", ColorBlue, ColorReset, msg)
|
||||
} else {
|
||||
msg = fmt.Sprintf("Info: %v", msg)
|
||||
}
|
||||
return write(msg)
|
||||
}
|
||||
|
||||
func GreenMessageF(format string, a ...interface{}) error {
|
||||
return writeWithColor(fmt.Sprintf(format, a...), ColorGreen)
|
||||
}
|
||||
|
||||
func YellowMessageF(format string, a ...interface{}) error {
|
||||
return writeWithColor(fmt.Sprintf(format, a...), ColorYellow)
|
||||
}
|
||||
func RedMessageF(format string, a ...interface{}) error {
|
||||
return writeWithColor(fmt.Sprintf(format, a...), ColorRed)
|
||||
}
|
||||
|
||||
func writeWithColor(msg string, color string) error {
|
||||
if useColor {
|
||||
return write(fmt.Sprintf("%v%v%v", color, msg, ColorReset))
|
||||
}
|
||||
return write(msg)
|
||||
|
||||
}
|
||||
|
||||
func write(msg string) error {
|
||||
_, err := fmt.Fprintln(output, msg)
|
||||
return err
|
||||
}
|
||||
151
internal/echo/echo_test.go
Normal file
151
internal/echo/echo_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue