Тест выполнения команды в go - PullRequest
0 голосов
/ 22 апреля 2020

Мы запускаем утилиту cli, которая может запускать несколько команд. Если вызывается с помощью конкретной команды c (cli background), она должна работать как демон (это команда кобры).

В настоящее время мы делаем это следующим образом:

func (a *App) StartInBackground() error {
    cmd := exec.Command(
        os.Args[0],
        "background",
    )

    if err := cmd.Start(); err != nil {
        return err
    }
    //write PID to file so that it can be killed
}

Это нормально работает при нормальной работе командной строки.

Проблема заключается в том, что я пишу тест. Таким образом, при выполнении теста os.Args[0] соответствует двоичному тесту, скомпилированному как часть выполнения теста. Таким образом, вместо нашего двоичного файла с командой (cobra) background весь тест выполняется снова, а это не то, что нам нужно (в фоновом режиме двоичный файл начнет отправлять данные в службу. Было бы здорово, если бы способ проверить этот конец в конец).

Есть ли способ проверить этот поток?

Я думал собрать где-то двоичный файл в ioutil.TempDir(), а затем передать двоичный файл путь к приложению как-то для нормальной и для тестовой работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...