Procházet zdrojové kódy

fix race condition in test

Jonathan Turner před 8 roky
rodič
revize
c4401db324
1 změnil soubory, kde provedl 16 přidání a 9 odebrání
  1. 16 9
      credentials/ccache_integration_test.go

+ 16 - 9
credentials/ccache_integration_test.go

@@ -30,23 +30,30 @@ func login() error {
 	fmt.Fprintf(file, testdata.TEST_KRB5CONF)
 
 	cmd := exec.Command(kinitCmd, "testuser1@TEST.GOKRB5")
-	stderr, _ := cmd.StderrPipe()
-	stdin, err := cmd.StdinPipe()
-	if err != nil {
-		return fmt.Errorf("could not open stdin to %s command: %v", kinitCmd, err)
-	}
+
+	stdinR, stdinW := io.Pipe()
+	stderrR, stderrW := io.Pipe()
+
+	cmd.Stdin = stdinR
+	cmd.Stderr = stderrW
+
+	//stderr, _ := cmd.StderrPipe()
+	//stdin, err := cmd.StdinPipe()
+	//if err != nil {
+	//	return fmt.Errorf("could not open stdin to %s command: %v", kinitCmd, err)
+	//}
 	err = cmd.Start()
 	if err != nil {
 		return fmt.Errorf("could not start %s command: %v", kinitCmd, err)
 	}
 	go func() {
-		defer stdin.Close()
-		io.WriteString(stdin, "passwordvalue")
+		io.WriteString(stdinW, "passwordvalue")
+		stdinW.Close()
 	}()
 	errBuf := new(bytes.Buffer)
 	go func() {
-		defer stderr.Close()
-		io.Copy(errBuf, stderr)
+		io.Copy(errBuf, stderrR)
+		stderrR.Close()
 	}()
 
 	err = cmd.Wait()