#!/usr/bin/env bash # Tests for scripts/lib/common.sh set -u SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)" source "$SCRIPT_DIR/lib/common.sh" FAILURES=0 assert_eq() { local expected="$1" actual="$2" name="$3" if [ "$expected" = "$actual" ]; then echo "PASS: $name" else echo "FAIL: $name (expected '$expected', got '$actual')" FAILURES=$((FAILURES + 1)) fi } # Test 1: log_info writes to stderr output=$(log_info "test message" 2>&1 1>/dev/null) case "$output" in *"test message"*) assert_eq "ok" "ok" "log_info goes to stderr" ;; *) assert_eq "ok" "fail" "log_info goes to stderr" ;; esac # Test 2: require_cmd succeeds for existing command require_cmd ls >/dev/null 2>&1 assert_eq "0" "$?" "require_cmd ls returns 0" # Test 3: require_cmd fails for missing command require_cmd this_command_definitely_does_not_exist_12345 >/dev/null 2>&1 result=$? [ "$result" -ne 0 ] && assert_eq "0" "0" "require_cmd missing returns non-zero" || assert_eq "0" "1" "require_cmd missing returns non-zero" # Test 4: make_backup_dir creates dir tmpdir=$(mktemp -d) backup=$(make_backup_dir "$tmpdir") [ -d "$backup" ] && assert_eq "yes" "yes" "make_backup_dir creates directory" || assert_eq "yes" "no" "make_backup_dir creates directory" rm -rf "$tmpdir" echo "---" echo "Failures: $FAILURES" exit $FAILURES