|
|
|
|
@@ -46,6 +46,7 @@ func TestWoodpeckerTagDeliveryTemplate(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
goDir, goLog := installGoBootstrapShim(t)
|
|
|
|
|
env := templateEnvironment(repository, commit, goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
moduleBefore := readWoodpeckerFixtureFile(t, filepath.Join(repository, "go.mod"))
|
|
|
|
|
output := runWoodpeckerBlock(t, command, repository, env)
|
|
|
|
|
if !strings.Contains(output, "state complete") {
|
|
|
|
|
@@ -77,6 +78,7 @@ func TestWoodpeckerTagDeliveryTemplate(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
goDir, goLog := installGoBootstrapShim(t)
|
|
|
|
|
env := templateEnvironment(repository, commit, goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
moduleBefore := readWoodpeckerFixtureFile(t, filepath.Join(repository, "go.mod"))
|
|
|
|
|
sumBefore := readWoodpeckerFixtureFile(t, filepath.Join(repository, "go.sum"))
|
|
|
|
|
for attempt := 0; attempt < 2; attempt++ {
|
|
|
|
|
@@ -108,6 +110,7 @@ func TestWoodpeckerTagDeliveryTemplate(t *testing.T) {
|
|
|
|
|
unrelated := cliGitOutput(t, repository, "rev-parse", "HEAD")
|
|
|
|
|
goDir, goLog := installControlledGoBootstrapShim(t)
|
|
|
|
|
env := templateEnvironment(repository, unrelated, goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
if output, err := executeWoodpeckerBlock(command, repository, env); err == nil {
|
|
|
|
|
t.Fatalf("wrong tag succeeded: %s", output)
|
|
|
|
|
} else if !strings.Contains(output, commit) || !strings.Contains(output, unrelated) {
|
|
|
|
|
@@ -123,6 +126,7 @@ func TestWoodpeckerTagDeliveryTemplate(t *testing.T) {
|
|
|
|
|
writeRepositoryFile(t, repository, "go.mod", "module example.com/different-tool-selection\n\ngo 1.25.0\n")
|
|
|
|
|
goDir, goLog := installControlledGoBootstrapShim(t)
|
|
|
|
|
env := templateEnvironment(repository, commit, goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
if output, err := executeWoodpeckerBlock(command, repository, env); err == nil {
|
|
|
|
|
t.Fatalf("dirty module succeeded: %s", output)
|
|
|
|
|
}
|
|
|
|
|
@@ -153,6 +157,7 @@ func TestWoodpeckerTagDeliveryTemplate(t *testing.T) {
|
|
|
|
|
goDir, goLog := installControlledGoBootstrapShim(t)
|
|
|
|
|
toolArgs := filepath.Join(t.TempDir(), "tool-arguments")
|
|
|
|
|
env := templateEnvironment(repository, strings.ToUpper(eventID), goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
env["CI_COMMIT_TAG"] = event.tag
|
|
|
|
|
env["RELEASEKIT_TOOL_ARGS_LOG"] = toolArgs
|
|
|
|
|
env["RELEASEKIT_TOOL_EXIT"] = "37"
|
|
|
|
|
@@ -225,6 +230,7 @@ func TestWoodpeckerTagDeliveryUsesTaggedModuleVersion(t *testing.T) {
|
|
|
|
|
moduleBefore := readWoodpeckerFixtureFile(t, filepath.Join(repository, "go.mod"))
|
|
|
|
|
commit := oldCommit
|
|
|
|
|
env := templateEnvironment(repository, commit, goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
useSyntheticModuleProxy(t, env, "file://"+filepath.ToSlash(proxy))
|
|
|
|
|
sumLog := filepath.Join(t.TempDir(), "tool-only-sums")
|
|
|
|
|
env["RELEASEKIT_SUM_LOG"] = sumLog
|
|
|
|
|
@@ -242,6 +248,7 @@ func TestWoodpeckerTagDeliveryUsesTaggedModuleVersion(t *testing.T) {
|
|
|
|
|
const module = "go.maximumdirect.net/releasekit"
|
|
|
|
|
writeRepositoryFile(t, repository, "go.mod", "module example.com/cli-candidate\n\ngo 1.25.0\n\nrequire "+module+" v0.2.197\n\ntool "+module+"/cmd/releasekit\n")
|
|
|
|
|
env := templateEnvironment(repository, "", goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
useSyntheticModuleProxy(t, env, "file://"+filepath.ToSlash(proxy))
|
|
|
|
|
runWoodpeckerBlock(t, "go mod tidy\ngo mod vendor", repository, env)
|
|
|
|
|
cliGitRun(t, repository, "add", "go.mod", "go.sum", "vendor")
|
|
|
|
|
@@ -267,6 +274,7 @@ func TestWoodpeckerTagDeliveryUsesTaggedModuleVersion(t *testing.T) {
|
|
|
|
|
commit := pushTaggedCLIRepository(t, repository)
|
|
|
|
|
moduleBefore := readWoodpeckerFixtureFile(t, filepath.Join(repository, "go.mod"))
|
|
|
|
|
env := templateEnvironment(repository, commit, goDir, goLog)
|
|
|
|
|
env["GOOS"], env["GOARCH"] = foreignTarget()
|
|
|
|
|
useSyntheticModuleProxy(t, env, "file://"+filepath.ToSlash(proxy))
|
|
|
|
|
sumLog := filepath.Join(t.TempDir(), "tool-only-sums")
|
|
|
|
|
env["RELEASEKIT_SUM_LOG"] = sumLog
|
|
|
|
|
@@ -418,6 +426,7 @@ func installGoBootstrapShim(t *testing.T) (string, string) {
|
|
|
|
|
goLog := filepath.Join(shimDir, "go-commands")
|
|
|
|
|
shim := `#!/bin/sh
|
|
|
|
|
printf 'cwd=%s GOWORK=%s GOTOOLCHAIN=%s %s\n' "$PWD" "$GOWORK" "$GOTOOLCHAIN" "$*" >> "$RELEASEKIT_GO_LOG"
|
|
|
|
|
case " $* " in *" -deps "*) printf 'target=%s/%s\n' "$GOOS" "$GOARCH" >> "$RELEASEKIT_GO_LOG" ;; esac
|
|
|
|
|
"$RELEASEKIT_REAL_GO" "$@"
|
|
|
|
|
status=$?
|
|
|
|
|
if [ "$status" -eq 0 ] && [ "$1" = "tool" ] && [ -n "${RELEASEKIT_SUM_LOG:-}" ]; then
|
|
|
|
|
@@ -442,6 +451,8 @@ func installControlledGoBootstrapShim(t *testing.T) (string, string) {
|
|
|
|
|
shim := `#!/bin/sh
|
|
|
|
|
set -eu
|
|
|
|
|
printf 'cwd=%s GOWORK=%s GOTOOLCHAIN=%s %s\n' "$PWD" "$GOWORK" "$GOTOOLCHAIN" "$*" >> "$RELEASEKIT_GO_LOG"
|
|
|
|
|
if [ "$1" = env ]; then exec "$RELEASEKIT_REAL_GO" "$@"; fi
|
|
|
|
|
case " $* " in *" -deps "*) printf 'target=%s/%s\n' "$GOOS" "$GOARCH" >> "$RELEASEKIT_GO_LOG" ;; esac
|
|
|
|
|
modfile=
|
|
|
|
|
for argument in "$@"; do
|
|
|
|
|
case "$argument" in -modfile=*) modfile=${argument#-modfile=} ;; esac
|
|
|
|
|
@@ -644,6 +655,9 @@ func assertModuleBootstrap(t *testing.T, repository, goLog, moduleBefore string,
|
|
|
|
|
func assertGoSelection(t *testing.T, repository, goLog string) {
|
|
|
|
|
t.Helper()
|
|
|
|
|
log := readWoodpeckerFixtureFile(t, goLog)
|
|
|
|
|
if !strings.Contains(log, "target="+runtime.GOOS+"/"+runtime.GOARCH) {
|
|
|
|
|
t.Fatalf("dependency inspection did not use host target: %s", log)
|
|
|
|
|
}
|
|
|
|
|
list := "list -mod=mod -modfile="
|
|
|
|
|
tool := "tool -modfile="
|
|
|
|
|
module := "go.maximumdirect.net/releasekit"
|
|
|
|
|
|