84 lines
2.3 KiB
Bash
Executable File
84 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# A test suite for testing CLI argument permutations of gsplash
|
|
|
|
GSPLASH="./build/gsplash"
|
|
GAME="/bin/true"
|
|
IMAGE="nonexistent.png"
|
|
|
|
if [ ! -f "$GSPLASH" ]; then
|
|
echo "Please run 'make' first to build gsplash."
|
|
exit 1
|
|
fi
|
|
|
|
export SDL_VIDEODRIVER=dummy
|
|
|
|
pass=0
|
|
fail=0
|
|
|
|
run_test() {
|
|
local expected_status=$1
|
|
shift
|
|
local expected_log="$1"
|
|
shift
|
|
local desc="$1"
|
|
shift
|
|
|
|
printf "Test: %-45s " "$desc"
|
|
|
|
# Run the command and capture output
|
|
local output
|
|
output=$($GSPLASH "$@" 2>&1)
|
|
local status=$?
|
|
|
|
local passed=true
|
|
local error_msg=""
|
|
|
|
if [ $status -ne $expected_status ]; then
|
|
passed=false
|
|
error_msg="Expected status $expected_status, got $status"
|
|
elif [ -n "$expected_log" ]; then
|
|
if ! echo "$output" | grep -q "$expected_log"; then
|
|
passed=false
|
|
error_msg="Expected log missing: $expected_log"
|
|
fi
|
|
fi
|
|
|
|
if $passed; then
|
|
echo "PASS"
|
|
pass=$((pass+1))
|
|
else
|
|
echo "FAIL ($error_msg)"
|
|
fail=$((fail+1))
|
|
fi
|
|
}
|
|
|
|
echo "=== Running CLI Argument Tests ==="
|
|
|
|
# Valid combinations (0=STRETCH, 1=CENTER, 2=CROP)
|
|
run_test 0 "mode=1" "Basic invocation" $IMAGE $GAME
|
|
run_test 0 "mode=0" "Long mode: stretch" --mode=stretch $IMAGE $GAME
|
|
run_test 0 "mode=1" "Long mode: center" --mode=center $IMAGE $GAME
|
|
run_test 0 "mode=2" "Long mode: crop" --mode=crop $IMAGE $GAME
|
|
run_test 0 "mode=0" "Long mode: fallback to stretch" --mode=invalid $IMAGE $GAME
|
|
run_test 0 "mode=0" "Short mode: stretch" -m stretch $IMAGE $GAME
|
|
run_test 0 "mode=1" "Short mode: center" -m center $IMAGE $GAME
|
|
run_test 0 "mode=2" "Short mode: crop" -m crop $IMAGE $GAME
|
|
run_test 0 "mode=0" "Short mode: fallback to stretch" -m whatever $IMAGE $GAME
|
|
run_test 0 "mode=1" "With game arguments" $IMAGE $GAME arg1 arg2
|
|
run_test 0 "mode=2" "Mode and game arguments" -m crop $IMAGE $GAME arg1 arg2
|
|
|
|
# Invalid combinations (Usage errors, so we just check for status 1, no specific log needed)
|
|
run_test 1 "" "No arguments"
|
|
run_test 1 "" "Only image" $IMAGE
|
|
run_test 1 "" "Missing arg for short mode (-m only)" -m $IMAGE
|
|
run_test 1 "" "Missing game for short mode" -m stretch $IMAGE
|
|
|
|
echo "================================================="
|
|
echo "Tests completed: $pass passed, $fail failed."
|
|
|
|
if [ $fail -gt 0 ]; then
|
|
exit 1
|
|
fi
|
|
exit 0
|