| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #!/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'
|