From 0d04aefa0c5e7956cb2dbc80596910cbe53136bf Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 07:36:19 +0000 Subject: publish-apk: allow publishing from another machine over ssh The host gate stopped the Fedora laptop publishing at all, which left a build made there with nowhere to go. It now takes PUBLISH_SSH and sends the file to the real host instead. The gate itself is unchanged in spirit: without PUBLISH_SSH a build from elsewhere is still refused, because the failure it guards against is writing to a local path that merely looks like the deploy host's. Two tests cover that -- the error names the way out, and a failed remote publish never falls back to writing locally. Transfers land on a temporary name and move into place only once complete, and the remote copy is hash-compared against the source before the served bytes are checked. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B --- test/run-tests.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'test') diff --git a/test/run-tests.sh b/test/run-tests.sh index 1c75cd7..5830224 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -329,5 +329,23 @@ else bad "pruning kept the wrong ones" "newest backup was deleted" fi +# 25. The wrong-host message has to name the way out, or the laptop is simply stuck. +out=$("$BIN/publish-apk" /dev/null thing.apk --host definitely-not-this-host 2>&1); rc=$? +if [ $rc -eq 2 ] && printf '%s' "$out" | grep -q "PUBLISH_SSH"; then + ok "wrong-host error explains how to publish remotely" +else + bad "ssh hint" "rc=$rc out=$out" +fi + +# 26. PUBLISH_SSH must not become a way to write locally on the wrong host -- the whole point +# is that it sends the file to the real one. +out=$(PUBLISH_SSH="nobody@invalid.invalid" "$BIN/publish-apk" "$realapk" thing.apk \ + --host definitely-not-this-host --dir "$tmproot/should-not-be-touched" 2>&1); rc=$? +if [ $rc -ne 0 ] && [ ! -e "$tmproot/should-not-be-touched/thing.apk" ]; then + ok "remote publish never falls back to writing locally" +else + bad "remote fallback" "rc=$rc; local file created?" +fi + printf '\n=== summary: %d passed, %d failed ===\n' "$pass" "$fail" [ "$fail" -eq 0 ] -- cgit v1.2.3