github.com/bdarnell/errcheck@v0.0.0-20150224205548-d278a1ad0695/main_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "io" 6 "os" 7 "strings" 8 "testing" 9 ) 10 11 func TestMain(t *testing.T) { 12 saveStderr := os.Stderr 13 saveStdout := os.Stdout 14 saveCwd, err := os.Getwd() 15 if err != nil { 16 t.Errorf("Cannot receive current directory: %v", err) 17 } 18 19 r, w, err := os.Pipe() 20 if err != nil { 21 t.Errorf("Cannot create pipe: %v", err) 22 } 23 24 os.Stderr = w 25 os.Stdout = w 26 27 bufChannel := make(chan string) 28 29 go func() { 30 buf := new(bytes.Buffer) 31 _, err = io.Copy(buf, r) 32 r.Close() 33 if err != nil { 34 t.Errorf("Cannot copy to buffer: %v", err) 35 } 36 37 bufChannel <- buf.String() 38 }() 39 40 exitCode := mainCmd([]string{"cmd name", "github.com/kisielk/errcheck/testdata"}) 41 42 w.Close() 43 44 os.Stderr = saveStderr 45 os.Stdout = saveStdout 46 os.Chdir(saveCwd) 47 48 out := <-bufChannel 49 50 if exitCode != exitUncheckedError { 51 t.Errorf("Exit code is %d, expected %d", exitCode, exitUncheckedError) 52 } 53 54 expectUnchecked := 9 55 if got := strings.Count(out, "UNCHECKED"); got != expectUnchecked { 56 t.Errorf("Got %d UNCHECKED errors, expected %d in:\n%s", got, expectUnchecked, out) 57 } 58 }