Files
davidandClaude Opus 5.5 7ae6a5c1be
shellcheck / shellcheck (push) Failing after 16s
smoketest: don't run the pre-push hook when pushing to the VM
upstream_set pushes the commit under test from the working copy, so
coredesktop-dev's pre-push hook ran make check on every push to the VM.
Inside the smoketest those checks saw VM_GIT_URL and friends, the
smoketest tests pushed to the real VM and failed, and the hook stopped
the push, failing the installed image's build. The push now uses
--no-verify, and the tests clear the smoketest's variables.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 07:31:55 -07:00

56 lines
1.6 KiB
Bash

#!/bin/bash
# Shared setup for the bats tests. Each test gets its own HOME and a bin dir at
# the front of PATH where it can put fake versions of pacman, yay, sudo, etc.
# Used by the .bats files that load this one
# shellcheck disable=SC2034
REPO="$(cd "$BATS_TEST_DIRNAME/.." && pwd)"
common_setup() {
export HOME="$BATS_TEST_TMPDIR/home"
export STUB_BIN="$BATS_TEST_TMPDIR/bin"
export STUB_LOG="$BATS_TEST_TMPDIR/stub.log"
mkdir -p "$HOME" "$STUB_BIN"
: > "$STUB_LOG"
export PATH="$STUB_BIN:$PATH"
unset COREDESKTOP
# Set when the tests run inside a smoketest (a pre-push hook's checks, say),
# where they would point the smoketest tests at the real VM
unset VM_GIT_SSH VM_GIT_URL SMOKETEST_REPO SMOKETEST_RESULTS SMOKETEST_SHARED \
SMOKETEST_REF SMOKETEST_VM_DIR IMAGE_REF VARIANT
}
# A test file that needs more setup defines its own setup that calls this first
setup() {
common_setup
}
# stub NAME [BODY]: put a fake NAME on PATH that appends "NAME args..." to
# $STUB_LOG and then runs BODY, a bash snippet that sees the args as "$@"
stub() {
local name="$1" body="${2:-}"
cat > "$STUB_BIN/$name" << EOF
#!/bin/bash
echo "$name \$*" >> "\$STUB_LOG"
$body
EOF
chmod +x "$STUB_BIN/$name"
}
# called NAME ARGS...: true if the stub log has exactly the line "NAME ARGS..."
called() {
grep -qxF "$*" "$STUB_LOG"
}
# not_called NAME: true if the stub NAME never ran
not_called() {
! grep -q "^$1 " "$STUB_LOG"
}
# uncalled NAME ARGS...: the opposite of called. (A bare "! called ..." would
# not fail the test: bats, like set -e, ignores the status of a ! command.)
uncalled() {
! called "$@"
}