package main import ( "io/ioutil" "os" "strings" "testing" "time" ) func TestTickPrinter(t *testing.T) { defer testOut(t)() name := os.Stdout.Name() tp := NewTickPrinter(time.Millisecond * 250) go tp.Start() time.Sleep(time.Millisecond * 300) tp.Stop() b, err := ioutil.ReadFile(name) if err != nil { t.Fatal(err) } ts, err := time.Parse("15:04:05", strings.TrimSpace(string(b))) if err != nil { t.Fatal(err) } if (time.Now().Minute()*60+time.Now().Hour())-(ts.Minute()*60+ts.Hour()) > 1 { t.Fatal(ts) } } func testOut(t *testing.T) func() { wasOut := os.Stdout var err error if os.Stdout, err = ioutil.TempFile(os.TempDir(), "testOut*"); err != nil { t.Fatal(err) } return func() { os.Stdout = wasOut } }