Skip to content
Open
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
9 changes: 7 additions & 2 deletions arcup/arcup
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set -euo pipefail

# NOTE: if you make modifications to this script, please increment the version number.
# WARNING: the SemVer pattern: major.minor.patch must be followed as we use it to determine if the script is up to date.
ARCUP_INSTALLER_VERSION="0.2.0"
ARCUP_INSTALLER_VERSION="0.2.1"

REPO="${ARC_REPO:-circlefin/arc-node}"
if [[ -n "${ARC_REPO:-}" ]] && [[ ! "$ARC_REPO" =~ ^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$ ]]; then
Expand Down Expand Up @@ -656,7 +656,12 @@ verify_checksum_file() {
local archive_name="$3"
local expected_checksum expected_name actual_checksum

if ! read -r expected_checksum expected_name < "$checksum_path"; then
# `read` returns non-zero when the final line has no trailing newline, even
# though it still populates the variables. Check the parsed hash rather than
# read's exit status so a valid checksum file whose last line lacks a
# trailing newline is not rejected as empty.
read -r expected_checksum expected_name < "$checksum_path" || true
if [[ -z "$expected_checksum" ]]; then
error "Checksum file is empty: $checksum_path"
fi

Expand Down
7 changes: 7 additions & 0 deletions arcup/test_arcup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,13 @@ test_checksum_validation() {

printf '%s other-asset.tar.gz\n' "$checksum" > "$checksum_file"
expect_fail "checksum filename mismatch fails" verify_checksum_file "$archive" "$checksum_file" "$archive_name"

# A checksum file whose final line has no trailing newline is still valid.
# `read` returns non-zero at EOF but populates the fields, so it must be
# accepted rather than rejected as empty.
printf '%s %s' "$checksum" "$archive_name" > "$checksum_file"
verify_checksum_file "$archive" "$checksum_file" "$archive_name"
pass "checksum file without trailing newline passes"
}

test_download_error_lists_assets() {
Expand Down