#!/usr/bin/env bash # Offline tests for catalogue-publish (version-code.sh + dry-run via run.sh). set -u HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" FAILS=0 ok(){ echo "PASS: $1"; }; bad(){ echo "FAIL: $1"; FAILS=$((FAILS+1)); } vc_eq(){ local o; o="$(bash "$HERE/version-code.sh" "$1" 2>/dev/null)"; [ "$o" = "$2" ] && ok "$1 -> $2" || bad "$1 -> '$o' (want $2)"; } vc_fail(){ bash "$HERE/version-code.sh" "$1" >/dev/null 2>&1 && bad "$1 should fail" || ok "$1 rejected"; } vc_eq 0.1.5 1005; vc_eq 1.6.0 1006000; vc_eq 12.0.999 12000999 vc_fail 1.2.1000; vc_fail 1.2; vc_fail v1.2.3; vc_fail 1.2.3-beta.1 TMP="$(mktemp -d)"; trap 'rm -rf "$TMP"' EXIT printf 'x' > "$TMP/App-1.0.0.nupkg" SECRET="s3cr3t-PUBLISH-KEY-do-not-leak" OUT="$(GITHUB_ACTION_PATH="$HERE" INPUT_APP=silvermail INPUT_FILE="$TMP/App-1.0.0.nupkg" \ INPUT_PLATFORM=windows INPUT_ARCH=x64 INPUT_FORMAT=nupkg INPUT_VERSION=1.0.0 INPUT_VERSION_CODE= \ INPUT_CHANNEL=beta INPUT_NOTES_FILE= INPUT_SIGNER_IDENTITY= INPUT_CATALOGUE_URL= INPUT_DRY_RUN=true \ CATALOGUE_PUBLISH_KEY="$SECRET" bash "$HERE/run.sh" 2>&1)"; RC=$? [ $RC -eq 0 ] && ok "dry-run exit 0" || bad "dry-run rc=$RC: $OUT" for n in Platform=Windows Format=Nupkg VersionCode=1000000 AppSlug=silvermail; do printf '%s' "$OUT" | grep -qF -- "$n" && ok "dry-run has $n" || bad "dry-run missing $n"; done printf '%s' "$OUT" | grep -qF -- "$SECRET" && bad "key leaked" || ok "key not printed" exit $FAILS