github.com/prattmic/llgo-embedded@v0.0.0-20150820070356-41cfecea0e1e/third_party/liner/race_test.go (about) 1 // +build race 2 3 package liner 4 5 import ( 6 "io/ioutil" 7 "os" 8 "sync" 9 "testing" 10 ) 11 12 func TestWriteHistory(t *testing.T) { 13 oldout := os.Stdout 14 defer func() { os.Stdout = oldout }() 15 oldin := os.Stdout 16 defer func() { os.Stdin = oldin }() 17 18 newinr, newinw, err := os.Pipe() 19 if err != nil { 20 t.Fatal(err) 21 } 22 os.Stdin = newinr 23 newoutr, newoutw, err := os.Pipe() 24 if err != nil { 25 t.Fatal(err) 26 } 27 defer newoutr.Close() 28 os.Stdout = newoutw 29 30 var wait sync.WaitGroup 31 wait.Add(1) 32 s := NewLiner() 33 go func() { 34 s.AppendHistory("foo") 35 s.AppendHistory("bar") 36 s.Prompt("") 37 wait.Done() 38 }() 39 40 s.WriteHistory(ioutil.Discard) 41 42 newinw.Close() 43 wait.Wait() 44 }