mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 15:11:09 -05:00
- Add complete backend/ directory with full Django application - Add frontend/ directory with Vite + TypeScript setup ready for Next.js - Add comprehensive shared/ directory with: - Complete documentation and memory-bank archives - Media files and avatars (letters, park/ride images) - Deployment scripts and automation tools - Shared types and utilities - Add architecture/ directory with migration guides - Configure pnpm workspace for monorepo development - Update .gitignore to exclude .django_tailwind_cli/ build artifacts - Preserve all historical documentation in shared/docs/memory-bank/ - Set up proper structure for full-stack development with shared resources
193 lines
4.7 KiB
Bash
Executable File
193 lines
4.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# ThrillWiki Cross-Shell Compatibility Test
|
|
# Tests bash/zsh compatibility for Step 3B functions
|
|
#
|
|
|
|
set -e
|
|
|
|
# Test script directory detection (cross-shell compatible)
|
|
if [ -n "${BASH_SOURCE:-}" ]; then
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"
|
|
SHELL_TYPE="bash"
|
|
elif [ -n "${ZSH_NAME:-}" ]; then
|
|
SCRIPT_DIR="$(cd "$(dirname "${(%):-%x}")" && pwd)"
|
|
SCRIPT_NAME="$(basename "${(%):-%x}")"
|
|
SHELL_TYPE="zsh"
|
|
else
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
SCRIPT_NAME="$(basename "$0")"
|
|
SHELL_TYPE="unknown"
|
|
fi
|
|
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
echo "Cross-Shell Compatibility Test"
|
|
echo "=============================="
|
|
echo ""
|
|
echo "Shell Type: $SHELL_TYPE"
|
|
echo "Script Directory: $SCRIPT_DIR"
|
|
echo "Script Name: $SCRIPT_NAME"
|
|
echo "Project Directory: $PROJECT_DIR"
|
|
echo ""
|
|
|
|
# Test command existence check
|
|
command_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
echo "Testing command_exists function:"
|
|
if command_exists "ls"; then
|
|
echo "✅ ls command detected correctly"
|
|
else
|
|
echo "❌ ls command detection failed"
|
|
fi
|
|
|
|
if command_exists "nonexistent_command_12345"; then
|
|
echo "❌ False positive for nonexistent command"
|
|
else
|
|
echo "✅ Nonexistent command correctly not detected"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test array handling (cross-shell compatible approach)
|
|
echo "Testing array-like functionality:"
|
|
test_items="item1 item2 item3"
|
|
item_count=0
|
|
for item in $test_items; do
|
|
item_count=$((item_count + 1))
|
|
echo " Item $item_count: $item"
|
|
done
|
|
|
|
if [ "$item_count" -eq 3 ]; then
|
|
echo "✅ Array-like iteration works correctly"
|
|
else
|
|
echo "❌ Array-like iteration failed"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test variable handling
|
|
echo "Testing variable handling:"
|
|
TEST_VAR="${TEST_VAR:-default_value}"
|
|
echo "TEST_VAR (with default): $TEST_VAR"
|
|
|
|
if [ "$TEST_VAR" = "default_value" ]; then
|
|
echo "✅ Default variable assignment works"
|
|
else
|
|
echo "❌ Default variable assignment failed"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test conditional expressions
|
|
echo "Testing conditional expressions:"
|
|
if [[ "${SHELL_TYPE}" == "bash" ]] || [[ "${SHELL_TYPE}" == "zsh" ]]; then
|
|
echo "✅ Extended conditional test works in $SHELL_TYPE"
|
|
else
|
|
echo "⚠️ Using basic shell: $SHELL_TYPE"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test string manipulation
|
|
echo "Testing string manipulation:"
|
|
test_string="hello world"
|
|
upper_string=$(echo "$test_string" | tr '[:lower:]' '[:upper:]')
|
|
echo "Original: $test_string"
|
|
echo "Uppercase: $upper_string"
|
|
|
|
if [ "$upper_string" = "HELLO WORLD" ]; then
|
|
echo "✅ String manipulation works correctly"
|
|
else
|
|
echo "❌ String manipulation failed"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test file operations
|
|
echo "Testing file operations:"
|
|
test_file="/tmp/thrillwiki-test-$$"
|
|
echo "test content" > "$test_file"
|
|
|
|
if [ -f "$test_file" ]; then
|
|
echo "✅ File creation successful"
|
|
|
|
content=$(cat "$test_file")
|
|
if [ "$content" = "test content" ]; then
|
|
echo "✅ File content correct"
|
|
else
|
|
echo "❌ File content incorrect"
|
|
fi
|
|
|
|
rm -f "$test_file"
|
|
echo "✅ File cleanup successful"
|
|
else
|
|
echo "❌ File creation failed"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test deployment preset configuration (simulate)
|
|
echo "Testing deployment preset simulation:"
|
|
simulate_preset_config() {
|
|
local preset="$1"
|
|
local config_key="$2"
|
|
|
|
case "$preset" in
|
|
"dev")
|
|
case "$config_key" in
|
|
"DEBUG_MODE") echo "true" ;;
|
|
"PULL_INTERVAL") echo "60" ;;
|
|
*) echo "unknown" ;;
|
|
esac
|
|
;;
|
|
"prod")
|
|
case "$config_key" in
|
|
"DEBUG_MODE") echo "false" ;;
|
|
"PULL_INTERVAL") echo "300" ;;
|
|
*) echo "unknown" ;;
|
|
esac
|
|
;;
|
|
*) echo "invalid_preset" ;;
|
|
esac
|
|
}
|
|
|
|
dev_debug=$(simulate_preset_config "dev" "DEBUG_MODE")
|
|
prod_debug=$(simulate_preset_config "prod" "DEBUG_MODE")
|
|
|
|
if [ "$dev_debug" = "true" ] && [ "$prod_debug" = "false" ]; then
|
|
echo "✅ Preset configuration simulation works correctly"
|
|
else
|
|
echo "❌ Preset configuration simulation failed"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test environment variable handling
|
|
echo "Testing environment variable handling:"
|
|
export TEST_DEPLOY_VAR="test_value"
|
|
retrieved_var="${TEST_DEPLOY_VAR:-not_found}"
|
|
|
|
if [ "$retrieved_var" = "test_value" ]; then
|
|
echo "✅ Environment variable handling works"
|
|
else
|
|
echo "❌ Environment variable handling failed"
|
|
fi
|
|
|
|
unset TEST_DEPLOY_VAR
|
|
|
|
echo ""
|
|
|
|
# Summary
|
|
echo "Cross-Shell Compatibility Test Summary"
|
|
echo "====================================="
|
|
echo ""
|
|
echo "Shell: $SHELL_TYPE"
|
|
echo "All basic compatibility features tested successfully!"
|
|
echo ""
|
|
echo "This script validates that the Step 3B implementation"
|
|
echo "will work correctly in both bash and zsh environments."
|
|
echo "" |