forked from Mirror/pmbootstrap
The test suite needed a `pmbootstrap shutdown` after running through, before it could successfully run again. Explanation: This was caused by `test/test_pkgrel_bump.py`, which creates a temporary work folder with every subfolder ("chroot_native", "cache_apk_x86_64", ...) linked to the original work folder except for the "packages" folder. At the end of the test case, `pmbootstrap shutdown` gets executed and is expected to umount everything as usual. But it does not umount anything because of the symlinks, so `work/chroot_native/mnt/pmbootstrap-packages` points to the fake packages folder of that test case, even after it is finished. As a result, any test case that tries to access the packages folder in the native chroot, will fail until `pmbootstrap shutdown` gets called. Detailed Changes: * Umount all folders inside the work folder, even if these are symlinks * Remove obsolete reference to "disable timestamp based rebuilds" in a comment in `test/test_pkgrel_bump.py` * Run `pmbootstrap work_migrate` and `pmbootstrap shutdown` at the beginning of `test/testcases_fast.sh`, in case the pkgrel_bump test case was aborted before it could properly shutdown and to make it more robust in general (user may have changed the mountpoints, work folder may need to be migrated)
46 lines
1.5 KiB
Bash
Executable file
46 lines
1.5 KiB
Bash
Executable file
#!/bin/sh -e
|
|
# usage: testcases_fast.sh [--all]
|
|
|
|
# Disable QEMU and aports/upstream compatibility tests
|
|
# (These run with different CI runners in parallel, see #1610)
|
|
disabled="aports aportgen upstream_compatibility soname_bump qemu_running_processes"
|
|
|
|
# Optionally enable all test cases
|
|
if [ "$1" = "--all" ]; then
|
|
disabled=""
|
|
else
|
|
echo "Disabled test case(s): $disabled"
|
|
echo "Use '$(basename "$0") --all' to enable all test cases."
|
|
fi
|
|
|
|
# Make sure that the work folder format is up to date, and that there are no
|
|
# mounts from aborted test cases (#1595)
|
|
cd "$(dirname "$0")/.."
|
|
./pmbootstrap.py work_migrate
|
|
./pmbootstrap.py -q shutdown
|
|
|
|
# Make sure we have a valid device (#1128)
|
|
device="$(./pmbootstrap.py config device)"
|
|
deviceinfo="$PWD/aports/device/device-$device/deviceinfo"
|
|
if ! [ -e "$deviceinfo" ]; then
|
|
echo "ERROR: Could not find deviceinfo file for selected device '$device'."
|
|
echo "Expected path: $deviceinfo"
|
|
echo "Maybe you have switched to a branch where your device does not exist?"
|
|
echo "Use 'pmbootstrap config device qemu-amd64' to switch to a valid device."
|
|
exit 1
|
|
fi
|
|
|
|
# Filter out disabled testcases
|
|
enabled=""
|
|
for file in test/test_*.py; do
|
|
for test in $disabled; do
|
|
[ "test/test_${test}.py" = "$file" ] && continue 2
|
|
done
|
|
enabled="$enabled $file"
|
|
done
|
|
|
|
# Run enabled testcases with coverage enabled
|
|
# Note: Pytest is called through python so that this is compatible with
|
|
# running from a venv (e.g. in gitlab CI)
|
|
# shellcheck disable=SC2086
|
|
python -m pytest -vv -x --cov=pmb $enabled --tb=native
|