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>
This commit is contained in:
Herbie Ong 2019-03-19 16:42:01 -07:00
parent b936504483
commit 4630b3daa6

View File

@ -332,14 +332,14 @@ func patchProtos(check func(error), repoRoot string) {
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()
}