浏览代码

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>
Herbie Ong 6 年之前
父节点
当前提交
4630b3daa6
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      integration_test.go

+ 4 - 4
integration_test.go

@@ -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()
 }