|
|
@@ -1,122 +0,0 @@
|
|
|
-#!/bin/bash
|
|
|
-# Regression checks for default config source directories; no game downloads.
|
|
|
-set -e
|
|
|
-
|
|
|
-rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
|
-module="${rootdir}/lgsm/modules/install_config.sh"
|
|
|
-testdir="$(mktemp -d)"
|
|
|
-trap 'rm -rf "${testdir}"' EXIT
|
|
|
-
|
|
|
-# Load only the helpers, without running the game-specific install dispatch.
|
|
|
-for helper in fn_check_cfgdir fn_default_config_local fn_default_config_remote fn_set_config_vars; do
|
|
|
- # shellcheck disable=SC1090
|
|
|
- source <(sed -n "/^${helper}() {/,/^}/p" "${module}")
|
|
|
-done
|
|
|
-
|
|
|
-fn_messages_separator() { :; }
|
|
|
-fn_sleep_time() { :; }
|
|
|
-fn_sleep_time_1() { :; }
|
|
|
-fn_script_log_info() { :; }
|
|
|
-fn_script_log_pass() { :; }
|
|
|
-fn_script_log_fail() { :; }
|
|
|
-fn_print_ok_eol() { :; }
|
|
|
-fn_print_ok_eol_nl() { :; }
|
|
|
-fn_print_fail_eol() { :; }
|
|
|
-fn_print_fail_eol_nl() { :; }
|
|
|
-fn_print_skip_eol_nl() { :; }
|
|
|
-fn_fetch_file() {
|
|
|
- mkdir -p "${5}"
|
|
|
- printf '%s\n' "template ${6}" > "${5}/${6}"
|
|
|
-}
|
|
|
-
|
|
|
-assert_content() {
|
|
|
- if [ "$(cat "${1}")" != "${2}" ]; then
|
|
|
- echo "FAIL: unexpected contents in ${1}" >&2
|
|
|
- exit 1
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-servercfgdir="${testdir}/active configs"
|
|
|
-servercfgdirdefault="${testdir}/bundled templates"
|
|
|
-servercfgdefault="server.cfg"
|
|
|
-servercfgfullpath="${servercfgdir}/nested/instance.cfg"
|
|
|
-mkdir -p "${servercfgdirdefault}"
|
|
|
-printf '%s\n' template > "${servercfgdirdefault}/${servercfgdefault}"
|
|
|
-fn_default_config_local > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" template
|
|
|
-printf '%s\n' customised > "${servercfgfullpath}"
|
|
|
-fn_default_config_local > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" customised
|
|
|
-
|
|
|
-unset servercfgdirdefault
|
|
|
-printf '%s\n' legacy > "${servercfgdir}/${servercfgdefault}"
|
|
|
-servercfgfullpath="${servercfgdir}/legacy.cfg"
|
|
|
-fn_default_config_local > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" legacy
|
|
|
-servercfgdirdefault=""
|
|
|
-servercfgfullpath="${servercfgdir}/empty.cfg"
|
|
|
-fn_default_config_local > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" legacy
|
|
|
-
|
|
|
-# Preserve relative subdirectories in template filenames (e.g. pc2).
|
|
|
-servercfgdefault="config_sample/server.cfg"
|
|
|
-mkdir -p "${servercfgdir}/config_sample"
|
|
|
-printf '%s\n' nested > "${servercfgdir}/${servercfgdefault}"
|
|
|
-servercfgfullpath="${servercfgdir}/sample.cfg"
|
|
|
-fn_default_config_local > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" nested
|
|
|
-
|
|
|
-servercfgdefault="missing.cfg"
|
|
|
-servercfgfullpath="${servercfgdir}/missing-instance.cfg"
|
|
|
-set +e
|
|
|
-fn_default_config_local > /dev/null 2>&1
|
|
|
-set -e
|
|
|
-[ "${exitcode}" -ne 0 ]
|
|
|
-[ ! -e "${servercfgfullpath}" ]
|
|
|
-
|
|
|
-lgsmdir="${testdir}/lgsm"
|
|
|
-shortname="arma3"
|
|
|
-servercfgdir="${testdir}/remote configs"
|
|
|
-servercfgdirdefault="${testdir}/download cache"
|
|
|
-servercfgdefault="server.cfg"
|
|
|
-servercfgfullpath="${servercfgdir}/instance.cfg"
|
|
|
-networkcfgdefault="network.cfg"
|
|
|
-networkcfgfullpath="${servercfgdir}/instance-network.cfg"
|
|
|
-array_configs=(server.cfg network.cfg extra.cfg)
|
|
|
-fn_default_config_remote > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" 'template server.cfg'
|
|
|
-assert_content "${networkcfgfullpath}" 'template network.cfg'
|
|
|
-assert_content "${servercfgdir}/extra.cfg" 'template extra.cfg'
|
|
|
-assert_content "${servercfgdirdefault}/server.cfg" 'template server.cfg'
|
|
|
-printf '%s\n' customised > "${servercfgfullpath}"
|
|
|
-fn_default_config_remote > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" customised
|
|
|
-
|
|
|
-# Template lookup must honour the same custom cache during substitutions.
|
|
|
-config="server.cfg"
|
|
|
-printf '%s\n' 'SERVERNAME="SERVERNAME"' > "${servercfgdirdefault}/${config}"
|
|
|
-cp "${servercfgdirdefault}/${config}" "${servercfgfullpath}"
|
|
|
-fn_set_config_vars > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" 'SERVERNAME="LinuxGSM"'
|
|
|
-
|
|
|
-shortname="dst"
|
|
|
-clustercfgdefault="cluster.ini"
|
|
|
-clustercfgfullpath="${testdir}/cluster/instance.ini"
|
|
|
-mkdir -p "$(dirname "${clustercfgfullpath}")"
|
|
|
-array_configs=(cluster.ini)
|
|
|
-fn_default_config_remote > /dev/null
|
|
|
-assert_content "${clustercfgfullpath}" 'template cluster.ini'
|
|
|
-
|
|
|
-shortname="test"
|
|
|
-array_configs=(server.cfg)
|
|
|
-unset servercfgdirdefault
|
|
|
-servercfgfullpath="${servercfgdir}/remote-legacy.cfg"
|
|
|
-fn_default_config_remote > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" 'template server.cfg'
|
|
|
-assert_content "${lgsmdir}/config-default/config-game/server.cfg" 'template server.cfg'
|
|
|
-servercfgdirdefault=""
|
|
|
-servercfgfullpath="${servercfgdir}/remote-empty.cfg"
|
|
|
-fn_default_config_remote > /dev/null
|
|
|
-assert_content "${servercfgfullpath}" 'template server.cfg'
|
|
|
-
|
|
|
-echo 'PASS: local and remote config source directories, fallbacks, substitutions, and existing configs'
|