trying a simple shell script and fixing archives
This commit is contained in:
132
tests/test_utils.sh
Normal file
132
tests/test_utils.sh
Normal file
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Test utilities for run_himalaya.sh testing
|
||||
|
||||
# Colors for test output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Test counters
|
||||
TESTS_RUN=0
|
||||
TESTS_PASSED=0
|
||||
TESTS_FAILED=0
|
||||
|
||||
# Setup function - prepares test environment
|
||||
setup_test() {
|
||||
# Clear any existing mock environment variables
|
||||
unset MOCK_ENVELOPE_LIST
|
||||
unset MOCK_MESSAGE_CONTENT
|
||||
unset MOCK_EMPTY_INBOX
|
||||
unset MOCK_HIMALAYA_FAIL
|
||||
unset MOCK_INVALID_MESSAGE_ID
|
||||
|
||||
# Set up PATH to use mock himalaya
|
||||
export PATH="$(pwd)/tests:$PATH"
|
||||
|
||||
# Create temporary files for testing
|
||||
export TEST_TEMP_DIR="/tmp/himalaya_test_$$"
|
||||
mkdir -p "$TEST_TEMP_DIR"
|
||||
}
|
||||
|
||||
# Cleanup function
|
||||
cleanup_test() {
|
||||
# Remove temporary files
|
||||
if [ -n "$TEST_TEMP_DIR" ] && [ -d "$TEST_TEMP_DIR" ]; then
|
||||
rm -rf "$TEST_TEMP_DIR"
|
||||
fi
|
||||
|
||||
# Reset PATH
|
||||
export PATH=$(echo "$PATH" | sed "s|$(pwd)/tests:||")
|
||||
}
|
||||
|
||||
# Function to simulate user input
|
||||
simulate_input() {
|
||||
local input="$1"
|
||||
echo "$input"
|
||||
}
|
||||
|
||||
# Function to run a test
|
||||
run_test() {
|
||||
local test_name="$1"
|
||||
local test_function="$2"
|
||||
|
||||
echo -e "${YELLOW}Running: $test_name${NC}"
|
||||
TESTS_RUN=$((TESTS_RUN + 1))
|
||||
|
||||
setup_test
|
||||
|
||||
if $test_function; then
|
||||
echo -e "${GREEN}✓ PASS: $test_name${NC}"
|
||||
TESTS_PASSED=$((TESTS_PASSED + 1))
|
||||
else
|
||||
echo -e "${RED}✗ FAIL: $test_name${NC}"
|
||||
TESTS_FAILED=$((TESTS_FAILED + 1))
|
||||
fi
|
||||
|
||||
cleanup_test
|
||||
echo
|
||||
}
|
||||
|
||||
# Function to assert equality
|
||||
assert_equals() {
|
||||
local expected="$1"
|
||||
local actual="$2"
|
||||
local message="$3"
|
||||
|
||||
if [ "$expected" = "$actual" ]; then
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}Assertion failed: $message${NC}"
|
||||
echo -e "${RED}Expected: '$expected'${NC}"
|
||||
echo -e "${RED}Actual: '$actual'${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to assert command success
|
||||
assert_success() {
|
||||
local command="$1"
|
||||
local message="$2"
|
||||
|
||||
if eval "$command" >/dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}Command failed: $message${NC}"
|
||||
echo -e "${RED}Command: $command${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to assert command failure
|
||||
assert_failure() {
|
||||
local command="$1"
|
||||
local message="$2"
|
||||
|
||||
if eval "$command" >/dev/null 2>&1; then
|
||||
echo -e "${RED}Command unexpectedly succeeded: $message${NC}"
|
||||
echo -e "${RED}Command: $command${NC}"
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to print test summary
|
||||
print_test_summary() {
|
||||
echo "===================="
|
||||
echo "Test Summary"
|
||||
echo "===================="
|
||||
echo "Tests run: $TESTS_RUN"
|
||||
echo -e "Passed: ${GREEN}$TESTS_PASSED${NC}"
|
||||
echo -e "Failed: ${RED}$TESTS_FAILED${NC}"
|
||||
|
||||
if [ $TESTS_FAILED -eq 0 ]; then
|
||||
echo -e "${GREEN}All tests passed!${NC}"
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}Some tests failed!${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user