feat: support WORLD files in compressed tar format (#1297)

This commit is contained in:
Geoff Bourne
2022-01-23 22:19:25 -06:00
committed by GitHub
parent 09834c289a
commit 18d8aba20f
18 changed files with 123 additions and 65 deletions

View File

@@ -9,6 +9,4 @@ services:
GENERIC_PACKS: https://github.com/itzg/mc-image-helper/releases/download/v1.9.5/mc-image-helper-1.9.5.zip,/packs/testing.zip
volumes:
- ./packs:/packs
- data:/data
volumes:
data: {}
- ./data:/data

View File

@@ -0,0 +1 @@
mc-image-helper assert fileExists one.txt mods/two.txt

View File

@@ -1,43 +1,50 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# go to script root directory
cd "$(dirname "$0")" || exit 1
# compose down function for reuse
down() {
docker-compose down -v --remove-orphans
}
checkandExitOnFailure(){
failed=$1
# docker-compose logs outputs messages from the specified container
if $failed; then
docker-compose logs mc
down
cd ..
exit 2
fi
}
# tests that only run the setup files for things like downloads and configuration.
# tests that only run the setup files for things like downloads and configuration.
setupOnlyMinecraftTest(){
folder=$1
cd "$folder"
failed=false
# run the monitor to validate the Minecraft image is healthy
docker-compose --log-level ERROR up --quiet-pull --exit-code-from mc 2>/dev/null || failed=true
echo "${folder} Result: failed=$failed"
checkandExitOnFailure $failed
down
result=0
if ! logs=$(docker compose run --quiet-pull mc 2>&1); then
echo "${folder} setup FAILED"
echo ":::::::::::: LOGS ::::::::::::::::
$logs
::::::::::::::::::::::::::::::::::
"
result=1
elif [ -f verify.sh ]; then
if ! docker run --rm --entrypoint bash -v "${PWD}/data":/data -v "${PWD}/verify.sh":/verify "${IMAGE_TO_TEST:-itzg/minecraft-server}" /verify; then
echo "${folder} verify FAILED"
result=1
else
echo "${folder} verify PASS"
fi
else
echo "${folder} PASS"
fi
docker compose down -v --remove-orphans
cd ..
return $result
}
# go through each folder in setuponly and test setups
FOLDERS=$(ls)
for folder in $FOLDERS; do
# If folder is a directory
if [ -d "$folder" ]; then
echo "Starting Tests on ${folder}"
setupOnlyMinecraftTest $folder
fi
done
if (( $# > 0 )); then
for folder in "$@"; do
echo "Starting Tests in ${folder}"
setupOnlyMinecraftTest "$folder"
done
else
readarray -t folders < <(find . -maxdepth 2 -mindepth 2 -name docker-compose.yml -printf '%h\n')
for folder in "${folders[@]}"; do
echo "Starting Tests in ${folder}"
setupOnlyMinecraftTest "$folder"
done
fi

View File

@@ -0,0 +1,14 @@
version: "3"
services:
mc:
restart: "no"
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
environment:
EULA: "TRUE"
SETUP_ONLY: "TRUE"
VERSION: ${MINECRAFT_VERSION:-LATEST}
WORLD: /worlds/world-for-testing.tgz
volumes:
- ./worlds:/worlds:ro
- ./data:/data

View File

@@ -0,0 +1 @@
mc-image-helper assert fileExists world/level.dat

View File

@@ -0,0 +1,14 @@
version: "3"
services:
mc:
restart: "no"
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
environment:
EULA: "TRUE"
SETUP_ONLY: "TRUE"
VERSION: ${MINECRAFT_VERSION:-LATEST}
WORLD: /worlds/world-for-testing.zip
volumes:
- ./worlds:/worlds:ro
- ./data:/data

View File

@@ -0,0 +1 @@
mc-image-helper assert fileExists world/level.dat