Я хочу проверить, что функция callProgram
выполняет двоичный файл и правильно обрабатывает вывод.Для этого моей первоначальной мыслью было бы скомпилировать необработанный код, например:
package mytest
import (
"testing"
)
const (
binary_code = `
package main
func main() {
// Glorious processing ...
}
`
)
func TestCall(t *testing.T) {
p := buildTestProgram(binary_code, "~/testbinary")
defer p.Delete()
callProgram("~/testbinary")
}
Я изучил команду build (runBuild
), и ее реализация достаточно проста.Проблема в том, что он живет в пространстве имен internal
, а cmd/go
, похоже, не представляет никакого способа вызова runBuild
или подобного.
Поэтому мой вопрос заключается в том, как проверить определенный двоичный файл, а также иметьвзаимодействовать с хостинговой системой как можно меньше.
Да, я мог бы загрузить готовый двоичный файл, выполнить go build
и т. д., но я был бы очень рад минимизировать шансы потенциальных ошибок / сложности, а такжебыть максимально портативным.