You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
packer/packer_test/common/base.go

37 lines
927 B

package common
import (
"fmt"
"math/rand"
"os"
"os/exec"
"path/filepath"
"runtime"
"testing"
)
// BuildTestPacker builds a new Packer binary based on the current state of the repository.
//
// If for some reason the binary cannot be built, we will immediately exit with an error.
func BuildTestPacker(t *testing.T) (string, error) {
testDir, err := currentDir()
if err != nil {
return "", fmt.Errorf("failed to compile packer binary: %s", err)
}
packerCoreDir := filepath.Dir(filepath.Dir(testDir))
outBin := filepath.Join(os.TempDir(), fmt.Sprintf("packer_core-%d", rand.Int()))
if runtime.GOOS == "windows" {
outBin = fmt.Sprintf("%s.exe", outBin)
}
compileCommand := exec.Command("go", "build", "-C", packerCoreDir, "-o", outBin)
logs, err := compileCommand.CombinedOutput()
if err != nil {
t.Fatalf("failed to compile Packer core: %s\ncompilation logs: %s", err, logs)
}
return outBin, nil
}