diff options
Diffstat (limited to 'internal/vlog')
| -rw-r--r-- | internal/vlog/vlog.go | 25 | ||||
| -rw-r--r-- | internal/vlog/vlog_test.go | 78 |
2 files changed, 103 insertions, 0 deletions
diff --git a/internal/vlog/vlog.go b/internal/vlog/vlog.go new file mode 100644 index 0000000..ab48478 --- /dev/null +++ b/internal/vlog/vlog.go @@ -0,0 +1,25 @@ +// vlog -- verbose logger -- wraps log functions and only performs them if "verbose" +package vlog + +import ( + "fmt" +) + +var VERBOSE bool + +func init() { + VERBOSE=false +} + +func Printf(format string, v ...interface{}) { + if VERBOSE { + fmt.Printf(format, v...) + } +} + +func Println(v ...interface{}) { + if VERBOSE { + fmt.Println(v...) + } +} + diff --git a/internal/vlog/vlog_test.go b/internal/vlog/vlog_test.go new file mode 100644 index 0000000..9def0f0 --- /dev/null +++ b/internal/vlog/vlog_test.go @@ -0,0 +1,78 @@ +package vlog + +import ( + "bytes" + "fmt" + "os" + "testing" +) + +func captureStdout(f func()) string { + old := os.Stdout + r, w, _ := os.Pipe() + os.Stdout = w + + f() + + w.Close() + os.Stdout = old + + var buf bytes.Buffer + buf.ReadFrom(r) + return buf.String() +} + +func TestPrintfVerbose(t *testing.T) { + VERBOSE = true + defer func() { VERBOSE = false }() + + output := captureStdout(func() { + Printf("hello %s", "world") + }) + expected := fmt.Sprintf("hello %s", "world") + if output != expected { + t.Errorf("expected %q, got %q", expected, output) + } +} + +func TestPrintfSilent(t *testing.T) { + VERBOSE = false + + output := captureStdout(func() { + Printf("hello %s", "world") + }) + if output != "" { + t.Errorf("expected empty output when not verbose, got %q", output) + } +} + +func TestPrintlnVerbose(t *testing.T) { + VERBOSE = true + defer func() { VERBOSE = false }() + + output := captureStdout(func() { + Println("hello", "world") + }) + expected := fmt.Sprintln("hello", "world") + if output != expected { + t.Errorf("expected %q, got %q", expected, output) + } +} + +func TestPrintlnSilent(t *testing.T) { + VERBOSE = false + + output := captureStdout(func() { + Println("hello", "world") + }) + if output != "" { + t.Errorf("expected empty output when not verbose, got %q", output) + } +} + +func TestInit(t *testing.T) { + // init() sets VERBOSE to false + if VERBOSE != false { + t.Error("VERBOSE should default to false") + } +} |
