94b2b58d99
This builds a boot.iso in the vm, copies it out, and boots it. The tests that run inside the boot.iso (/tests/lorax/test_boot_bootiso.sh) cannot use beakerlib so it needs to be a simple shell script returning 1 on failure along with a descriptive message.
87 lines
2.2 KiB
Bash
Executable File
87 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Note: execute this file from the project root directory
|
|
#
|
|
# Test building a boot.iso using lorax
|
|
|
|
set -eu
|
|
|
|
BEAKERLIB_DIR=$(mktemp -d /tmp/lorax-test.XXXXXX)
|
|
CLI="${CLI:-}"
|
|
export BEAKERLIB_DIR
|
|
source /usr/share/beakerlib/beakerlib.sh
|
|
|
|
RELEASE=$(awk -F: '{ print $5 }' /etc/system-release-cpe)
|
|
export RELEASE
|
|
|
|
function setup_tests {
|
|
local share_dir=$1
|
|
|
|
# Make the boot.iso boot more quickly (isolinux.cfg)
|
|
for cfg in "$share_dir"/templates.d/99-generic/config_files/*/isolinux.cfg; do
|
|
sed -i.orig 's/^timeout.*/timeout 20/' "$cfg"
|
|
sed -i 's/quiet$/inst.sshd=1 console=ttyS0,115200n8/' "$cfg"
|
|
done
|
|
|
|
# Make the boot.iso boot more quickly (grub.conf)
|
|
for cfg in "$share_dir"/templates.d/99-generic/config_files/*/grub.conf; do
|
|
sed -i.orig 's/^timeout.*/timeout 2/' "$cfg"
|
|
sed -i 's/quiet$/inst.sshd=1 console=ttyS0,115200n8/' "$cfg"
|
|
done
|
|
|
|
# Make the boot.iso boot more quickly (grub2-efi.cfg)
|
|
for cfg in "$share_dir"/templates.d/99-generic/config_files/*/grub2-efi.cfg; do
|
|
sed -i.orig 's/^set timeout.*/set timeout=2/' "$cfg"
|
|
sed -i 's/\(.*linux .* ro$\)/\1 inst.sshd=1 console=ttyS0,115200n8/' "$cfg"
|
|
done
|
|
|
|
}
|
|
|
|
function teardown_tests {
|
|
local share_dir=$1
|
|
|
|
# Restore all the configuration files
|
|
for cfg in "$share_dir"/templates.d/99-generic/config_files/*/*.orig; do
|
|
mv "$cfg" "${cfg%%.orig}"
|
|
done
|
|
}
|
|
|
|
SHARE_DIR=$(mktemp -d '/tmp/lorax-share.XXXXX')
|
|
export SHARE_DIR
|
|
if [ -z "$CLI" ]; then
|
|
cp -R /usr/share/lorax/* "$SHARE_DIR"
|
|
else
|
|
top_srcdir=$(pwd)
|
|
export top_srcdir
|
|
source ./tests/testenv.sh
|
|
cp -R ./share/* "$SHARE_DIR"
|
|
fi
|
|
chmod a+rx -R "$SHARE_DIR"
|
|
setup_tests "$SHARE_DIR"
|
|
|
|
export BEAKERLIB_JOURNAL=0
|
|
|
|
if [ -z "$*" ]; then
|
|
# Run all the lorax tests
|
|
for t in ./tests/lorax/test_*sh; do
|
|
$t
|
|
done
|
|
else
|
|
# execute other tests which need more adjustments in the calling environment
|
|
# or can't be executed inside Travis CI
|
|
for TEST in "$@"; do
|
|
$TEST
|
|
done
|
|
fi
|
|
|
|
|
|
teardown_tests "$SHARE_DIR"
|
|
|
|
source "$BEAKERLIB_DIR/TestResults"
|
|
|
|
if [ $TESTRESULT_RESULT_ECODE != 0 ]; then
|
|
echo "Test failed. Leaving log in $BEAKERLIB_DIR"
|
|
exit $TESTRESULT_RESULT_ECODE
|
|
fi
|
|
|
|
rm -rf "$BEAKERLIB_DIR"
|