Wraps nspawn to be able to use pexpect. The test logs in on the console and runs screen. In one screen window it types in shutdown commands and checks whether a wall message was sent to the other.
34 lines
847 B
Bash
Executable File
34 lines
847 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -e
|
|
|
|
TEST_DESCRIPTION="shutdown testing"
|
|
IMAGE_NAME="shutdown"
|
|
TEST_NO_QEMU=1
|
|
|
|
# shellcheck source=test/test-functions
|
|
. "${TEST_BASE_DIR:?}/test-functions"
|
|
|
|
_ORIG_NSPAWN="$SYSTEMD_NSPAWN"
|
|
SYSTEMD_NSPAWN="$STATEDIR/run-nspawn"
|
|
|
|
setup_nspawn_root_hook() {
|
|
cat > "$STATEDIR"/run-nspawn <<-EOF
|
|
#!/bin/bash
|
|
exec "$TEST_BASE_DIR"/test-shutdown.py -- "$_ORIG_NSPAWN" "\$@"
|
|
exit 1
|
|
EOF
|
|
chmod 755 "$STATEDIR"/run-nspawn
|
|
}
|
|
|
|
test_append_files() {
|
|
# prevent shutdown in test suite, the expect script does that manually.
|
|
rm "$1"/usr/lib/systemd/tests/testdata/units/end.service
|
|
inst /usr/bin/screen
|
|
echo "PS1='screen\$WINDOW # '" > "$1"/etc/bash.bashrc
|
|
echo 'startup_message off' > "$1"/etc/screenrc
|
|
echo 'bell_msg ""' >> "$1"/etc/screenrc
|
|
}
|
|
|
|
do_test "$@"
|