mirror of
https://github.com/itzg/docker-minecraft-server
synced 2025-03-02 14:17:18 +00:00
refactoring a little bit some test script files (#3100)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
This commit is contained in:
parent
afbdfea0bb
commit
da4f7d0dd8
2 changed files with 143 additions and 167 deletions
|
@ -34,18 +34,14 @@ function get_major_version() {
|
|||
function isURL() {
|
||||
local value=$1
|
||||
|
||||
if [[ ${value:0:8} == "https://" || ${value:0:7} == "http://" || ${value:0:6} == "ftp://" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
[[ $value =~ ^(https?|ftp):// ]]
|
||||
}
|
||||
|
||||
function isValidFileURL() {
|
||||
suffix=${1:?Missing required suffix arg}
|
||||
url=${2:?Missing required url arg}
|
||||
|
||||
[[ "$url" == http*://*.${suffix} || "$url" == http*://*.${suffix}\?* ]]
|
||||
[[ "$url" =~ ^http.*://.*\.${suffix}(\?.*)?$ ]]
|
||||
}
|
||||
|
||||
function resolveEffectiveUrl() {
|
||||
|
@ -85,11 +81,7 @@ function isFalse() {
|
|||
}
|
||||
|
||||
function isDebugging() {
|
||||
if isTrue "${DEBUG:-false}"; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
isTrue "${DEBUG:-false}"
|
||||
}
|
||||
|
||||
function handleDebugMode() {
|
||||
|
@ -113,11 +105,9 @@ function log() {
|
|||
# The return status when listing options is zero if all optnames are enabled, non- zero otherwise.
|
||||
oldState=$(shopt -po xtrace || true)
|
||||
shopt -u -o xtrace
|
||||
|
||||
ts=
|
||||
if isDebugging || isTrue "${LOG_TIMESTAMP:-false}"; then
|
||||
ts=" $(date --rfc-3339=seconds)"
|
||||
else
|
||||
ts=
|
||||
fi
|
||||
echo "[init]${ts} $*"
|
||||
eval "$oldState"
|
||||
|
@ -162,106 +152,95 @@ function normalizeMemSize() {
|
|||
}
|
||||
|
||||
function compare_version() {
|
||||
local left_version=$1
|
||||
local comparison=$2
|
||||
local right_version=$3
|
||||
local left_version=$1
|
||||
local comparison=$2
|
||||
local right_version=$3
|
||||
|
||||
if [[ -z "$left_version" ]]; then
|
||||
echo "Left version is required"
|
||||
return 1
|
||||
fi
|
||||
if [[ -z "$left_version" ]]; then
|
||||
echo "Left version is required"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ -z "$right_version" ]]; then
|
||||
echo "Right version is required"
|
||||
return 1
|
||||
fi
|
||||
if [[ -z "$right_version" ]]; then
|
||||
echo "Right version is required"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Handle version channels ('a', 'b', or numeric)
|
||||
if [[ $left_version == a* || $left_version == b* ]]; then
|
||||
left_version=${left_version:1}
|
||||
fi
|
||||
|
||||
if [[ $right_version == a* || $right_version == b* ]]; then
|
||||
right_version=${right_version:1}
|
||||
fi
|
||||
# Handle version channels ('a', 'b', or numeric)
|
||||
if [[ $left_version == a* || $left_version == b* ]]; then
|
||||
left_version=${left_version:1}
|
||||
fi
|
||||
|
||||
if [[ $right_version == a* || $right_version == b* ]]; then
|
||||
right_version=${right_version:1}
|
||||
fi
|
||||
|
||||
local left_version_channel=${left_version:0:1}
|
||||
if [[ $left_version_channel =~ [0-9] ]]; then
|
||||
left_version_channel='r'
|
||||
fi
|
||||
local left_version_channel=${left_version:0:1}
|
||||
if [[ $left_version_channel =~ [0-9] ]]; then
|
||||
left_version_channel='r'
|
||||
fi
|
||||
|
||||
local right_version_channel=${right_version:0:1}
|
||||
if [[ $right_version_channel =~ [0-9] ]]; then
|
||||
right_version_channel='r'
|
||||
fi
|
||||
local right_version_channel=${right_version:0:1}
|
||||
if [[ $right_version_channel =~ [0-9] ]]; then
|
||||
right_version_channel='r'
|
||||
fi
|
||||
|
||||
if [[ $comparison == "lt" && $left_version_channel < $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "lt" && $left_version_channel > $right_version_channel ]]; then
|
||||
return 1
|
||||
elif [[ $comparison == "gt" && $left_version_channel > $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "gt" && $left_version_channel < $right_version_channel ]]; then
|
||||
return 1
|
||||
elif [[ $comparison == "le" && $left_version_channel < $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "le" && $left_version_channel == $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "ge" && $left_version_channel > $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "ge" && $left_version_channel == $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "eq" && $left_version_channel == $right_version_channel ]]; then
|
||||
return 0
|
||||
fi
|
||||
if [[ $comparison == "lt" && $left_version_channel < $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "lt" && $left_version_channel > $right_version_channel ]]; then
|
||||
return 1
|
||||
elif [[ $comparison == "gt" && $left_version_channel > $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "gt" && $left_version_channel < $right_version_channel ]]; then
|
||||
return 1
|
||||
elif [[ $comparison == "le" && $left_version_channel < $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "le" && $left_version_channel == $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "ge" && $left_version_channel > $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "ge" && $left_version_channel == $right_version_channel ]]; then
|
||||
return 0
|
||||
elif [[ $comparison == "eq" && $left_version_channel == $right_version_channel ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Compare the versions using sort -V
|
||||
local result
|
||||
# Compare the versions using sort -V
|
||||
local result=1
|
||||
|
||||
case $comparison in
|
||||
"lt")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | head -n1) == "$left_version" && "$left_version" != "$right_version" ]]; then
|
||||
result=0
|
||||
else
|
||||
result=1
|
||||
fi
|
||||
;;
|
||||
"le")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | head -n1) == "$left_version" ]]; then
|
||||
result=0
|
||||
else
|
||||
result=1
|
||||
fi
|
||||
;;
|
||||
"eq")
|
||||
if [[ "$left_version" == "$right_version" ]]; then
|
||||
result=0
|
||||
else
|
||||
result=1
|
||||
fi
|
||||
;;
|
||||
"ge")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | tail -n1) == "$left_version" ]]; then
|
||||
result=0
|
||||
else
|
||||
result=1
|
||||
fi
|
||||
;;
|
||||
"gt")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | tail -n1) == "$left_version" && "$left_version" != "$right_version" ]]; then
|
||||
result=0
|
||||
else
|
||||
result=1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported comparison operator: $comparison"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
case $comparison in
|
||||
"lt")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | head -n1) == "$left_version" && "$left_version" != "$right_version" ]]; then
|
||||
result=0
|
||||
fi
|
||||
;;
|
||||
"le")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | head -n1) == "$left_version" ]]; then
|
||||
result=0
|
||||
fi
|
||||
;;
|
||||
"eq")
|
||||
if [[ "$left_version" == "$right_version" ]]; then
|
||||
result=0
|
||||
fi
|
||||
;;
|
||||
"ge")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | tail -n1) == "$left_version" ]]; then
|
||||
result=0
|
||||
fi
|
||||
;;
|
||||
"gt")
|
||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | tail -n1) == "$left_version" && "$left_version" != "$right_version" ]]; then
|
||||
result=0
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported comparison operator: $comparison"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
return $result
|
||||
return $result
|
||||
}
|
||||
|
||||
function versionLessThan() {
|
||||
|
@ -270,14 +249,10 @@ function versionLessThan() {
|
|||
oldState=$(shopt -po xtrace || true)
|
||||
shopt -u -o xtrace
|
||||
|
||||
# Use if-else since strict mode might be enabled
|
||||
if compare_version "${VERSION}" "lt" "${1?}"; then
|
||||
eval "$oldState"
|
||||
return 0
|
||||
else
|
||||
eval "$oldState"
|
||||
return 1
|
||||
fi
|
||||
eval "$oldState"
|
||||
|
||||
# Verify strict mode because it might be enabled
|
||||
compare_version "${VERSION}" "lt" "${1?}"
|
||||
}
|
||||
|
||||
requireVar() {
|
||||
|
@ -302,7 +277,7 @@ requireEnum() {
|
|||
done
|
||||
|
||||
log "ERROR: $var must be set to one of $*"
|
||||
# exit 1
|
||||
# exit 1
|
||||
}
|
||||
|
||||
function writeEula() {
|
||||
|
@ -369,19 +344,19 @@ function extract() {
|
|||
|
||||
type=$(file -b --mime-type "${src}")
|
||||
case "${type}" in
|
||||
application/zip)
|
||||
unzip -o -q -d "${destDir}" "${src}"
|
||||
;;
|
||||
application/x-tar|application/gzip|application/x-gzip|application/x-bzip2)
|
||||
tar -C "${destDir}" -xf "${src}"
|
||||
;;
|
||||
application/zstd|application/x-zstd)
|
||||
tar -C "${destDir}" --use-compress-program=unzstd -xf "${src}"
|
||||
;;
|
||||
*)
|
||||
log "ERROR: unsupported archive type: $type"
|
||||
return 1
|
||||
;;
|
||||
application/zip)
|
||||
unzip -o -q -d "${destDir}" "${src}"
|
||||
;;
|
||||
application/x-tar | application/gzip | application/x-gzip | application/x-bzip2)
|
||||
tar -C "${destDir}" -xf "${src}"
|
||||
;;
|
||||
application/zstd | application/x-zstd)
|
||||
tar -C "${destDir}" --use-compress-program=unzstd -xf "${src}"
|
||||
;;
|
||||
*)
|
||||
log "ERROR: unsupported archive type: $type"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
@ -395,31 +370,33 @@ function checkSum() {
|
|||
# Get distro
|
||||
distro=$(getDistro)
|
||||
|
||||
if [ "${distro}" == "debian" ] && sha1sum -c "${sum_file}" --status 2> /dev/null; then
|
||||
return 0
|
||||
elif [ "${distro}" == "ubuntu" ] && sha1sum -c "${sum_file}" --status 2> /dev/null; then
|
||||
return 0
|
||||
elif [ "${distro}" == "alpine" ] && sha1sum -c "${sum_file}" -s 2> /dev/null; then
|
||||
return 0
|
||||
elif [ "${distro}" == "ol" ] && sha1sum -c "${sum_file}" --status 2> /dev/null; then
|
||||
return 0
|
||||
else
|
||||
case "${distro}" in
|
||||
debian | ubuntu | ol)
|
||||
sha1sum -c "${sum_file}" --status 2>/dev/null && return 0
|
||||
;;
|
||||
alpine)
|
||||
sha1sum -c "${sum_file}" -s 2>/dev/null && return 0
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function usesMods() {
|
||||
case "$FAMILY" in
|
||||
FORGE|FABRIC|HYBRID|SPONGE)
|
||||
return 0
|
||||
FORGE | FABRIC | HYBRID | SPONGE)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
function usesPlugins() {
|
||||
case "$FAMILY" in
|
||||
SPIGOT|HYBRID)
|
||||
return 0
|
||||
SPIGOT | HYBRID)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
@ -435,15 +412,15 @@ function resolveVersion() {
|
|||
|
||||
function resolveFamily() {
|
||||
case "$TYPE" in
|
||||
PAPER|SPIGOT|BUKKIT|CANYON|PUFFERFISH|PURPUR)
|
||||
FAMILY=SPIGOT
|
||||
;;
|
||||
FORGE)
|
||||
FAMILY=FORGE
|
||||
;;
|
||||
FABRIC|QUILT)
|
||||
FAMILY=FABRIC
|
||||
;;
|
||||
PAPER | SPIGOT | BUKKIT | CANYON | PUFFERFISH | PURPUR)
|
||||
FAMILY=SPIGOT
|
||||
;;
|
||||
FORGE)
|
||||
FAMILY=FORGE
|
||||
;;
|
||||
FABRIC | QUILT)
|
||||
FAMILY=FABRIC
|
||||
;;
|
||||
esac
|
||||
export FAMILY
|
||||
}
|
||||
|
|
|
@ -44,22 +44,20 @@ setupOnlyMinecraftTest(){
|
|||
# false positive since it's used in delta calculations below
|
||||
# shellcheck disable=SC2034
|
||||
start=$(date +%s)
|
||||
status=PASSED
|
||||
verify=
|
||||
if ! logs=$(docker compose run --rm -e SETUP_ONLY=true -e DEBUG="${DEBUG:-false}" mc 2>&1); then
|
||||
outputContainerLog "$logs"
|
||||
result=1
|
||||
elif [ -f verify.sh ]; then
|
||||
verify=" verify"
|
||||
if ! docker run --rm --entrypoint bash -v "${PWD}/data":/data -v "${PWD}/verify.sh":/verify "${IMAGE_TO_TEST}" -e /verify; then
|
||||
endTime=$(date +%s)
|
||||
echo "${folder} FAILED verify in $(delta start)"
|
||||
status=FAILED
|
||||
outputContainerLog "$logs"
|
||||
result=1
|
||||
else
|
||||
endTime=$(date +%s)
|
||||
echo "${folder} PASSED verify in $(delta start)"
|
||||
fi
|
||||
else
|
||||
echo "${folder} PASSED in $(delta start)"
|
||||
fi
|
||||
echo "${folder} ${status}${verify} in $(delta start)"
|
||||
|
||||
docker compose down -v --remove-orphans >& /dev/null
|
||||
cd ..
|
||||
|
@ -67,16 +65,17 @@ setupOnlyMinecraftTest(){
|
|||
return $result
|
||||
}
|
||||
|
||||
# go through each folder in setuponly and test setups
|
||||
if (( $# > 0 )); then
|
||||
for folder in "$@"; do
|
||||
echo "Starting Tests in ${folder}"
|
||||
setupOnlyMinecraftTest "$folder"
|
||||
done
|
||||
else
|
||||
foldersList=("$@")
|
||||
image=""
|
||||
|
||||
# Go through each folder in setuponly and test setups
|
||||
if (( $# == 0 )); then
|
||||
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} using $IMAGE_TO_TEST"
|
||||
setupOnlyMinecraftTest "$folder"
|
||||
done
|
||||
foldersList=("${folders[@]}")
|
||||
image=" using $IMAGE_TO_TEST"
|
||||
fi
|
||||
|
||||
for folder in "${foldersList[@]}"; do
|
||||
echo "Starting Tests in ${folder}${image}"
|
||||
setupOnlyMinecraftTest "$folder"
|
||||
done
|
Loading…
Add table
Reference in a new issue