Use the host target in the multi-module launcher

This commit is contained in:
2026-11-04 00:47:38 +00:00
parent bf07bed2ae
commit a8ffa89011
3 changed files with 33 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import (
"os"
"os/exec"
"path/filepath"
"runtime"
"strconv"
"strings"
"testing"
@@ -81,6 +82,11 @@ func TestMultiModuleLauncherUsesSelectedModuleAndProfile(t *testing.T) {
shim := `#!/bin/sh
set -eu
printf 'cwd=%s args=%s\n' "$PWD" "$*" >> "$RELEASEKIT_TEST_GO_LOG"
if [ "$1" = env ]; then
case "$2" in GOHOSTOS) printf '%s\n' "$RELEASEKIT_TEST_HOST_OS" ;; GOHOSTARCH) printf '%s\n' "$RELEASEKIT_TEST_HOST_ARCH" ;; esac
exit 0
fi
case " $* " in *" -deps "*) printf 'target=%s/%s\n' "$GOOS" "$GOARCH" >> "$RELEASEKIT_TEST_GO_LOG" ;; esac
modfile=
for argument in "$@"; do
case "$argument" in -modfile=*) modfile=${argument#-modfile=} ;; esac
@@ -98,6 +104,11 @@ fi
t.Setenv("RELEASEKIT_MODULE_MAP", mapPath)
t.Setenv("RELEASEKIT_TEST_GO_LOG", goLog)
t.Setenv("RELEASEKIT_TEST_TOOL_ARGS", argsLog)
t.Setenv("RELEASEKIT_TEST_HOST_OS", runtime.GOOS)
t.Setenv("RELEASEKIT_TEST_HOST_ARCH", runtime.GOARCH)
foreignOS, foreignArch := foreignTarget()
t.Setenv("GOOS", foreignOS)
t.Setenv("GOARCH", foreignArch)
launcher := filepath.Join(repository, "release.sh")
command := exec.Command(launcher, "with space", "v1.2.4")
var stdout, stderr bytes.Buffer
@@ -115,6 +126,9 @@ fi
if !strings.Contains(string(goCommands), "cwd="+wantModule) || !strings.Contains(string(goCommands), "v0.2.299") || strings.Contains(string(goCommands), "v0.2.197") {
t.Fatalf("tool bootstrap did not use selected module metadata: %s", goCommands)
}
if !strings.Contains(string(goCommands), "target="+runtime.GOOS+"/"+runtime.GOARCH) {
t.Fatalf("dependency inspection did not use host target: %s", goCommands)
}
toolArgs, err := os.ReadFile(argsLog)
if err != nil {
t.Fatal(err)
@@ -152,6 +166,9 @@ func TestMultiModuleLauncherRunsToolFromSelectedDependency(t *testing.T) {
t.Setenv("GOPROXY", "file://"+filepath.ToSlash(proxy))
t.Setenv("GOSUMDB", "off")
t.Setenv("GOTOOLCHAIN", "local")
foreignOS, foreignArch := foreignTarget()
t.Setenv("GOOS", foreignOS)
t.Setenv("GOARCH", foreignArch)
moduleBefore, err := os.ReadFile(filepath.Join(repository, "integrations", "ckconfig", "go.mod"))
if err != nil {
t.Fatal(err)
@@ -203,6 +220,17 @@ func TestMultiModuleLauncherRunsToolFromSelectedDependency(t *testing.T) {
}
}
func foreignTarget() (string, string) {
osName, arch := "windows", "arm64"
if runtime.GOOS == osName {
osName = "linux"
}
if runtime.GOARCH == arch {
arch = "amd64"
}
return osName, arch
}
func runModuleSelector(t *testing.T, helper, mode, value, mapPath string) string {
t.Helper()
command := exec.Command("sh", helper, mode, value)