integration_test: fix race condition between stderr and stdout
Split output of stderr and stdout instead of using combined buffer.
Change-Id: I4099ebca15099e91539b3ebab6b410fc49f76ce1
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/168347
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/integration_test.go b/integration_test.go
index 80ef06a..9df20d0 100644
--- a/integration_test.go
+++ b/integration_test.go
@@ -332,14 +332,14 @@
func mustRunCommand(t *testing.T, dir string, args ...string) string {
t.Helper()
stdout := new(bytes.Buffer)
- combined := new(bytes.Buffer)
+ stderr := new(bytes.Buffer)
cmd := exec.Command(args[0], args[1:]...)
cmd.Dir = dir
cmd.Env = append(os.Environ(), "PWD="+dir)
- cmd.Stdout = io.MultiWriter(stdout, combined)
- cmd.Stderr = combined
+ cmd.Stdout = stdout
+ cmd.Stderr = stderr
if err := cmd.Run(); err != nil {
- t.Fatalf("executing (%v): %v\n%s", strings.Join(args, " "), err, combined.String())
+ t.Fatalf("executing (%v): %v\n%s%s", strings.Join(args, " "), err, stdout.String(), stderr.String())
}
return stdout.String()
}