mirror of
https://github.com/hashicorp/packer.git
synced 2026-07-09 01:04:23 -04:00
39 lines
999 B
Go
39 lines
999 B
Go
// Copyright IBM Corp. 2024, 2026
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
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
|
|
}
|