Files
gh-vanman2024-cli-builder-p…/skills/commander-patterns/scripts/test-commander-cli.sh
2025-11-30 09:04:14 +08:00

84 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# Test Commander.js CLI with various inputs
set -euo pipefail
CLI_COMMAND="${1:?Usage: $0 <cli-command> [test-suite]}"
TEST_SUITE="${2:-basic}"
echo "🧪 Testing Commander.js CLI: $CLI_COMMAND"
echo "Test suite: $TEST_SUITE"
echo ""
PASSED=0
FAILED=0
# Helper function to run test
run_test() {
local test_name="$1"
local test_command="$2"
local expected_exit_code="${3:-0}"
echo -n "Testing: $test_name ... "
if eval "$test_command" > /dev/null 2>&1; then
actual_exit_code=0
else
actual_exit_code=$?
fi
if [[ $actual_exit_code -eq $expected_exit_code ]]; then
echo "✅ PASS"
((PASSED++))
else
echo "❌ FAIL (expected exit code $expected_exit_code, got $actual_exit_code)"
((FAILED++))
fi
}
# Basic tests
if [[ "$TEST_SUITE" == "basic" || "$TEST_SUITE" == "all" ]]; then
echo "Running basic tests..."
run_test "Help flag" "$CLI_COMMAND --help" 0
run_test "Version flag" "$CLI_COMMAND --version" 0
run_test "No arguments" "$CLI_COMMAND" 1
fi
# Command tests
if [[ "$TEST_SUITE" == "commands" || "$TEST_SUITE" == "all" ]]; then
echo ""
echo "Running command tests..."
run_test "List commands" "$CLI_COMMAND --help | grep -q 'Commands:'" 0
fi
# Option tests
if [[ "$TEST_SUITE" == "options" || "$TEST_SUITE" == "all" ]]; then
echo ""
echo "Running option tests..."
run_test "Unknown option" "$CLI_COMMAND --unknown-option" 1
run_test "Short flag" "$CLI_COMMAND -v" 0
run_test "Long flag" "$CLI_COMMAND --verbose" 0
fi
# Argument tests
if [[ "$TEST_SUITE" == "arguments" || "$TEST_SUITE" == "all" ]]; then
echo ""
echo "Running argument tests..."
run_test "Required argument missing" "$CLI_COMMAND deploy" 1
run_test "Required argument provided" "$CLI_COMMAND deploy production" 0
fi
echo ""
echo "Test Results:"
echo " Passed: $PASSED"
echo " Failed: $FAILED"
echo ""
if [[ $FAILED -gt 0 ]]; then
echo "❌ Some tests failed"
exit 1
else
echo "✅ All tests passed!"
exit 0
fi