Migrate tests to new Docker image

This commit is contained in:
sfan5 2024-03-25 16:48:09 +01:00
parent 045c7510bf
commit 41efbaf210
3 changed files with 32 additions and 17 deletions

@ -3,9 +3,15 @@ on: [push, pull_request]
jobs: jobs:
test: test:
name: "Unittests" name: "Unit Tests"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: 'minetest/minetest_game'
path: minetest_game
- name: Run tests - name: Run tests
run: MINETEST_VER=latest ./.util/run_tests.sh run: ./.util/run_tests.sh --docker

@ -1,29 +1,38 @@
#!/bin/bash #!/bin/bash
tempdir=/tmp/mt tempdir=$(mktemp -d)
confpath=$tempdir/minetest.conf confpath=$tempdir/minetest.conf
worldpath=$tempdir/world worldpath=$tempdir/world
trap 'rm -rf "$tempdir"' EXIT
use_docker=y [ -f worldedit/mod.conf ] || { echo "Must be run in modpack root folder." >&2; exit 1; }
[ -x ../../bin/minetestserver ] && use_docker=
rm -rf $tempdir mtserver=
mkdir -p $worldpath if [ "$1" == "--docker" ]; then
# the docker image doesn't have devtest command -v docker >/dev/null || { echo "Docker is not installed." >&2; exit 1; }
[ -n "$use_docker" ] || printf '%s\n' gameid=devtest >$worldpath/world.mt [ -d minetest_game ] || { echo "To run the test with Docker, a source checkout of minetest_game is required." >&2; exit 1; }
else
mtserver=$(command -v minetestserver)
[[ -z "$mtserver" && -x ../../bin/minetestserver ]] && mtserver=../../bin/minetestserver
[ -z "$mtserver" ] && { echo "To run the test outside of Docker, an installation of minetestserver is required." >&2; exit 1; }
fi
mkdir $worldpath
printf '%s\n' mg_name=singlenode '[end_of_params]' >$worldpath/map_meta.txt printf '%s\n' mg_name=singlenode '[end_of_params]' >$worldpath/map_meta.txt
printf '%s\n' worldedit_run_tests=true max_forceloaded_blocks=9999 >$confpath printf '%s\n' worldedit_run_tests=true >$confpath
if [ -n "$use_docker" ]; then if [ -z "$mtserver" ]; then
chmod -R 777 $tempdir chmod -R 777 $tempdir
[ -z "$DOCKER_IMAGE" ] && DOCKER_IMAGE="ghcr.io/minetest/minetest:master"
docker run --rm -i \ docker run --rm -i \
-v $confpath:/etc/minetest/minetest.conf \ -v "$confpath":/etc/minetest/minetest.conf \
-v $tempdir:/var/lib/minetest/.minetest \ -v "$tempdir":/var/lib/minetest/.minetest \
-v "$PWD/minetest_game":/var/lib/minetest/.minetest/games/minetest_game \
-v "$PWD/worldedit":/var/lib/minetest/.minetest/world/worldmods/worldedit \ -v "$PWD/worldedit":/var/lib/minetest/.minetest/world/worldmods/worldedit \
registry.gitlab.com/minetest/minetest/server:${MINETEST_VER} "$DOCKER_IMAGE"
else else
mkdir $worldpath/worldmods mkdir $worldpath/worldmods
ln -s "$PWD/worldedit" $worldpath/worldmods/worldedit ln -s "$PWD/worldedit" $worldpath/worldmods/worldedit
../../bin/minetestserver --config $confpath --world $worldpath --logfile /dev/null $mtserver --config "$confpath" --world "$worldpath" --logfile /dev/null
fi fi
test -f $worldpath/tests_ok || exit 1 test -f $worldpath/tests_ok || exit 1

@ -560,7 +560,7 @@ worldedit.run_tests = function()
for x = 0, math.floor(wanted.x/16) do for x = 0, math.floor(wanted.x/16) do
for y = 0, math.floor(wanted.y/16) do for y = 0, math.floor(wanted.y/16) do
for z = 0, math.floor(wanted.z/16) do for z = 0, math.floor(wanted.z/16) do
assert(minetest.forceload_block(vector.new(x*16, y*16, z*16), true)) assert(minetest.forceload_block(vector.new(x*16, y*16, z*16), true, -1))
end end
end end
end end