DistroHopper/tests/run_tests.sh
Claude 29ce40f05d
Add quickget/qget switch and test suite
qget:
- Add QGET_TEST_MODE guard so the script can be sourced for unit
  testing without executing the main logic

dh:
- Auto-detect getter tool (qget preferred, quickget fallback) in
  set_variables(); export as GETTER
- Add getter_list_os() wrapper using GETTER --list for portable
  OS enumeration
- Replace hard-coded quickget calls with $GETTER in
  renew_supported_vms(), renew_ready_vms(), and execmd strings
- Fix releases/editions/description parsing (sed instead of cut -f2
  which fails on colon-space separators)
- Add DH_TEST_MODE guard to prevent execution when sourcing for tests

action:
- Auto-detect getter tool at startup; export as GETTER
- Add --qget / -q and --quickget / -Q flags to override detection

tests/:
- tests/lib.sh: shared assert helpers (assert_eq, assert_ne,
  assert_match, assert_cmd, assert_fn_exists) with pass/fail counting
- tests/test_dh.sh: 31 unit tests covering set_variables, GETTER,
  getter_list_os, root_check, wayland_check, and all required
  function definitions
- tests/test_qget.sh: 23 unit tests covering os_support,
  test_result formatting, is_valid_language, check_hash, and all
  utility functions
- tests/test_action_files.sh: 784 structural tests verifying every
  action file has OSNAME, PRETTY, HOMEPAGE (valid URL), DESCRIPTION,
  releases_() and get_() functions
- tests/run_tests.sh: top-level runner executing all three suites

https://claude.ai/code/session_01M2UXTtQwzcGCNRnFiP2efQ
2026-02-28 19:42:33 +00:00

45 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
# Run all DistroHopper test suites
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
TESTS_DIR="$REPO_ROOT/tests"
_green='\033[0;32m'
_red='\033[0;31m'
_nc='\033[0m'
suite_pass=0
suite_fail=0
run_suite() {
local suite_file="$1"
local name
name=$(basename "$suite_file" .sh)
echo ""
echo "━━━ $name ━━━"
if bash "$suite_file"; then
suite_pass=$((suite_pass + 1))
else
suite_fail=$((suite_fail + 1))
fi
}
echo "════════════════════════════════"
echo " DistroHopper test suite"
echo "════════════════════════════════"
run_suite "$TESTS_DIR/test_dh.sh"
run_suite "$TESTS_DIR/test_qget.sh"
run_suite "$TESTS_DIR/test_action_files.sh"
echo ""
echo "════════════════════════════════"
total=$((suite_pass + suite_fail))
if [ $suite_fail -eq 0 ]; then
echo -e "${_green}All $total suites passed${_nc}"
else
echo -e "${_red}$suite_fail / $total suites failed${_nc}"
fi
echo "════════════════════════════════"
[ $suite_fail -eq 0 ]