File tree Expand file tree Collapse file tree 2 files changed +21
-10
lines changed
Expand file tree Collapse file tree 2 files changed +21
-10
lines changed Original file line number Diff line number Diff line change @@ -966,14 +966,21 @@ func captureDOTOutput(fn func() error) (string, error) {
966966 return "" , err
967967 }
968968 os .Stdout = w
969+ defer func () {
970+ os .Stdout = oldStdout
971+ }()
972+
973+ var buf bytes.Buffer
974+ readErrCh := make (chan error , 1 )
975+ go func () {
976+ _ , readErr := io .Copy (& buf , r )
977+ _ = r .Close ()
978+ readErrCh <- readErr
979+ }()
969980
970981 runErr := fn ()
971982 closeErr := w .Close ()
972- os .Stdout = oldStdout
973-
974- var buf bytes.Buffer
975- _ , readErr := io .Copy (& buf , r )
976- _ = r .Close ()
983+ readErr := <- readErrCh
977984
978985 if runErr != nil {
979986 return "" , runErr
Original file line number Diff line number Diff line change @@ -68,17 +68,21 @@ func captureStdout(t *testing.T, fn func()) string {
6868 os .Stdout = old
6969 }()
7070
71+ var buf bytes.Buffer
72+ readDone := make (chan error , 1 )
73+ go func () {
74+ _ , readErr := io .Copy (& buf , r )
75+ _ = r .Close ()
76+ readDone <- readErr
77+ }()
78+
7179 fn ()
7280
7381 if err := w .Close (); err != nil {
7482 t .Fatalf ("close writer: %v" , err )
7583 }
76- var buf bytes.Buffer
77- if _ , err := io .Copy (& buf , r ); err != nil {
84+ if err := <- readDone ; err != nil {
7885 t .Fatalf ("read capture: %v" , err )
7986 }
80- if err := r .Close (); err != nil {
81- t .Fatalf ("close reader: %v" , err )
82- }
8387 return buf .String ()
8488}
You can’t perform that action at this time.
0 commit comments