shellcheck / shellcheck (push) Failing after 17s
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>
72 lines
2.1 KiB
Bash
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
|
|
}
|