#!/bin/bash # Unit tests for lmsensors-extend.sh -n numeric mode [#618] set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" SCRIPT="$PROJECT_ROOT/sensors/temper/lmsensors-extend.sh" failed=0 if [[ -f "$SCRIPT" ]] && (source "$SCRIPT"); then echo "✅ script exists + sources cleanly" else echo "❌ script missing or fails to source: $SCRIPT" exit 1 fi # shellcheck disable=SC1091 source "$SCRIPT" # numeric_pick: TEMPer external > TEMPer internal > first native/sysfs value test_numeric_prefers_external() { if [[ "$(numeric_pick "22.5" "18.2" "" )" == "18.2" ]]; then echo "✅ numeric_pick prefers external probe" else echo "❌ numeric_pick external preference broken" ((++failed)) fi } test_numeric_falls_back_internal() { if [[ "$(numeric_pick "22.5" "" "")" == "22.5" ]]; then echo "✅ numeric_pick falls back to internal" else echo "❌ numeric_pick internal fallback broken" ((++failed)) fi } test_numeric_uses_first_line_value() { if [[ "$(numeric_pick "" "" "temp1: +27.5°C (high = +84.0°C)")" == "27.5" ]]; then echo "✅ numeric_pick parses first native temp" else echo "❌ numeric_pick native parse broken: got '$(numeric_pick "" "" "+27.5°C")'" ((++failed)) fi } test_numeric_empty_is_error() { if numeric_pick "" "" "" >/dev/null 2>&1; then echo "❌ numeric_pick should fail on no data" ((++failed)) else echo "✅ numeric_pick errors on no data" fi } test_numeric_prefers_external test_numeric_falls_back_internal test_numeric_uses_first_line_value test_numeric_empty_is_error if ((failed > 0)); then echo "❌ $failed numeric-mode test(s) failed" exit 1 fi echo "✅ all numeric-mode tests passed"