У меня есть функция, которая выполняется одновременно. Его задача — запустить метод командной строки, зарегистрировав ошибку, если она есть. Мой основной поток выполнения не ждет завершения этого метода. Он просто возвращается оптимистично.
Как мне проверить свою функцию? Предполагая, что я даю ему cmdStr
, например {"sleep", "1"}
, который работает, но не возвращается мгновенно, как я могу заставить мой тест ждать завершения этой функции?
Я хочу убедиться, что реальная программа, которая запускает это, не должна ждать завершения.
func runCmd(cmdStr []string, errChan chan error) {
cmd := exec.Command(cmdStr...)
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Start()
if err != nil {
errChan <- err
return
}
// Command started successfully, so our caller can continue.
errChan <- nil
err = cmd.Wait()
if err != nil {
log.Println(err)
}
}