From dc17670f62272a2cd0c2ade4d3302244fcccf6f0 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 31 Aug 2024 14:22:46 +0200 Subject: [PATCH] Yoloadd a bash -n to check bash syntax near the very beginning of the test suite to crash early if there are obvious syntax errors --- lib/tests.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/tests.sh b/lib/tests.sh index 41c8799..055c0fa 100644 --- a/lib/tests.sh +++ b/lib/tests.sh @@ -16,7 +16,21 @@ _STUFF_TO_RUN_BEFORE_INITIAL_SNAPSHOT() # Set witness files set_witness_files - [[ -e $package_path/manifest.toml ]] || return + [[ -e $package_path/manifest.toml ]] || log_critical "The app CI / package_check doesn't support testing packaging v1 apps anymore." + + + log_title "Basic bash syntax checks" + + local syntax_issue=false + pushd $package_path/scripts >/dev/null + for SCRIPT in $(ls _common.sh install remove upgrade backup restore change_url config 2>/dev/null) + do + # bash -n / noexec option allows to find syntax issues without actually running the scripts + # cf https://unix.stackexchange.com/questions/597743/bash-shell-noexec-option-usage-purpose + bash -n $SCRIPT | tee -a /proc/self/fd/3 || syntax_issue=true + done + popd >/dev/null + [[ $syntax_issue == true ]] && log_report_test_success || log_critical "Obvious syntax issues found which will make the scripts crash ... not running the actual tests until these are fixed" # We filter apt deps starting with $app_id to prevent stupid issues with for example cockpit and transmission where the apt package is not properly reinstalled on reinstall-after-remove test ... local apt_deps=$(python3 -c "import toml, sys; t = toml.loads(sys.stdin.read()); P = t['resources'].get('apt', {}).get('packages', ''); P = P.replace(',', ' ').split() if isinstance(P, str) else P; P = [p for p in P if p != '$app_id' and not p.startswith('$app_id-')]; print(' '.join(P));" < $package_path/manifest.toml)