Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions scripts/check_registry_versions.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail

version="${1#v}"
version="${1:-}"
version="${version#v}"
[[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || {
printf 'ERROR: expected a semantic version, got %q\n' "$1" >&2
printf 'ERROR: expected a semantic version, got %q\n' "${1:-}" >&2
exit 2
}

Expand Down
21 changes: 21 additions & 0 deletions tests/release/release-rehearsal.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,27 @@ set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
rehearsal="${repo_root}/scripts/release_rehearsal.sh"

# Invalid registry versions must fail validation before attempting any network
# requests, including when no positional argument was supplied.
assert_invalid_registry_version() {
local output status
if output="$(bash "${repo_root}/scripts/check_registry_versions.sh" "$@" 2>&1)"; then
printf 'FAIL: registry preflight accepted an invalid version\n' >&2
exit 1
else
status=$?
fi
if [[ "$status" -ne 2 ]]; then
printf 'FAIL: registry preflight expected exit 2, got %s: %s\n' "$status" "$output" >&2
exit 1
fi
grep -Fq 'ERROR: expected a semantic version' <<<"$output"
}

assert_invalid_registry_version nope
assert_invalid_registry_version
assert_invalid_registry_version ''

if [[ ! -x "$rehearsal" ]]; then
printf 'FAIL: release rehearsal is missing or not executable: %s\n' "$rehearsal" >&2
exit 1
Expand Down
Loading