44 lines
1.4 KiB
Bash
44 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
[[ $# -eq 1 ]] || {
|
|
printf 'usage: %s CONTROL_BINARY\n' "$0" >&2
|
|
exit 2
|
|
}
|
|
|
|
root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
binary="$(realpath "$1")"
|
|
fixture="$root/tests/fixtures/control-v0.1.0-alpha.7.db"
|
|
work="$(mktemp -d -t smm-arm64-schema-compatibility.XXXXXXXX)"
|
|
trap 'rm -rf -- "$work"' EXIT
|
|
|
|
[[ -x "$binary" ]] || {
|
|
printf 'published Control binary is not executable: %s\n' "$binary" >&2
|
|
exit 1
|
|
}
|
|
cp "$fixture" "$work/control.db"
|
|
printf '%s' 'fixture-ca' >"$work/control-ca.pfx"
|
|
mkdir -p "$work/backups" "$work/bundle"
|
|
|
|
export Control__DatabasePath="$work/control.db"
|
|
export Control__CertificateAuthorityPath="$work/control-ca.pfx"
|
|
export Control__BackupDirectory="$work/backups"
|
|
export Control__HubHelperPath=/bin/true
|
|
export Control__PrivilegeEscalationPath=/usr/bin/true
|
|
export DOTNET_BUNDLE_EXTRACT_BASE_DIR="$work/bundle"
|
|
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
|
|
|
|
"$binary" backup-create
|
|
backup_paths=("$work"/backups/backup-*)
|
|
[[ ${#backup_paths[@]} -eq 1 && -d "${backup_paths[0]}" ]] || {
|
|
printf '%s\n' 'arm64 published Control did not create exactly one backup' >&2
|
|
exit 1
|
|
}
|
|
|
|
rm -f -- "$work/control.db" "$work/control.db-wal" "$work/control.db-shm" "$work/control-ca.pfx"
|
|
"$binary" backup-restore "${backup_paths[0]}"
|
|
[[ -s "$work/control.db" && -s "$work/control-ca.pfx" ]]
|
|
"$binary" backup-create
|
|
|
|
printf '%s\n' 'PREVIOUS_SCHEMA_ARM64=PASS'
|