Fix updater tests for image pinning; harden helper load (node-26#19)
- test_host_updater: stub git/docker now model cat-file/show/rev-parse --verify and compose config/image inspect. The two update-path tests were failing on Linux CI (skipped locally on macOS, no flock). Adds tests for pull-before-checkout + .env pins, a missing pinned image leaving the node unchanged, and a pre-pinning target still updating. - drb-update.sh: load image-tags.sh via a variable + eval and confirm the functions exist; `source <(git show ...)` "succeeded" with nothing defined when git show failed, wedging every later update. - install.sh: skip pinning (warn) when the checked-out ref predates scripts/image-tags.sh instead of dying on the missing file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
6c8289f3f3
commit
e7b4aef142
@@ -158,10 +158,12 @@ do_update() {
|
||||
# the git tree hash of its own source directory, so the images always match
|
||||
# the code being checked out. The helper is read from the target commit so
|
||||
# its service list matches the target's compose file.
|
||||
local pin=0
|
||||
# Read into a variable, not `source <(...)`: a failed `git show` must leave
|
||||
# pin=0 rather than "succeed" with no functions defined.
|
||||
local pin=0 helper
|
||||
if git cat-file -e "$new:scripts/image-tags.sh" 2>/dev/null; then
|
||||
# shellcheck disable=SC1090
|
||||
source <(git show "$new:scripts/image-tags.sh") && pin=1
|
||||
helper="$(git show "$new:scripts/image-tags.sh")" && [ -n "$helper" ] && eval "$helper" \
|
||||
&& declare -F drb_image_tags drb_images_present drb_pin_image_tags >/dev/null && pin=1
|
||||
fi
|
||||
[ "$pin" = 1 ] || log "target ${new:0:12} predates image pinning — using its compose file's default tags"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user