Files
coredesktop/tests/finish-install.bats
davidandClaude Opus 5.5 1507ae925e
shellcheck / shellcheck (push) Failing after 17s
Say "CoreDesktop is installed." at the end of every install
When configure had nothing left to do, install.sh ended on the kernel check
and the firewall's warnings just above it, so a successful run could be taken
for a failure. Move the end of install.sh to system/finish-install.sh, which
now says the install worked before the reboot advice and configure offer, and
test it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 06:51:10 -07:00

72 lines
2.1 KiB
Bash

#!/usr/bin/env bats
load test_helper
# system/finish-install.sh with a fake uname and configure. The kernel is up to
# date unless a test says otherwise: uname reports a kernel whose modules exist.
setup() {
common_setup
KERNEL="$(ls /usr/lib/modules 2> /dev/null | head -n 1)"
export KERNEL
stub uname 'echo "$KERNEL"'
# configure --list prints $ITEMS; configure itself logs that it ran
export ITEMS="done core Federated Core"
mkdir -p "$HOME/.local/bin"
cat > "$HOME/.local/bin/configure" << 'STUB'
#!/bin/bash
echo "configure${*:+ $*}" >> "$STUB_LOG"
[ "$1" = --list ] && printf '%s\n' "$ITEMS"
exit 0
STUB
chmod +x "$HOME/.local/bin/configure"
# No terminal unless a test gives answers
export COREDESKTOP_TTY="$BATS_TEST_TMPDIR/no-tty/tty"
}
needs_modules() {
[ -n "$KERNEL" ] || skip "needs a kernel in /usr/lib/modules"
}
answer() {
export COREDESKTOP_TTY="$BATS_TEST_TMPDIR/answer"
echo "$1" > "$COREDESKTOP_TTY"
}
@test "finish-install says the install worked when nothing is left to do" {
needs_modules
run bash "$REPO/system/finish-install.sh"
[ "$status" -eq 0 ]
[[ "$output" == *"CoreDesktop is installed."* ]]
[[ "$output" == *"no reboot needed"* ]]
[[ "$output" != *"configure connects"* ]]
uncalled configure
}
@test "finish-install says the install worked, then asks for a reboot after a new kernel" {
KERNEL=0.0.0-not-installed
run bash "$REPO/system/finish-install.sh"
[ "$status" -eq 0 ]
[[ "$output" == *"CoreDesktop is installed."*"Reboot, then run: configure"* ]]
not_called configure
}
@test "finish-install says the install worked before offering configure" {
needs_modules
ITEMS="to do core Federated Core"
run bash "$REPO/system/finish-install.sh"
[ "$status" -eq 0 ]
[[ "$output" == *"CoreDesktop is installed."*"configure connects"*"To do it later, run: configure"* ]]
uncalled configure
}
@test "finish-install runs configure when asked" {
needs_modules
ITEMS="to do core Federated Core"
answer y
run bash "$REPO/system/finish-install.sh"
[ "$status" -eq 0 ]
[[ "$output" == *"CoreDesktop is installed."* ]]
called configure
}