shellcheck / shellcheck (push) Failing after 16s
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>
56 lines
1.6 KiB
Bash
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 "$@"
|
|
}
|