| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #!/usr/bin/env bash
- #############################################################################
- # Compatibility Test Script
- # Tests the installer across different bash versions and platforms
- #############################################################################
- set -e
- echo "╔════════════════════════════════════════════════════════════════╗"
- echo "║ OpenCode Installer Compatibility Test ║"
- echo "╚════════════════════════════════════════════════════════════════╝"
- echo ""
- # Colors
- GREEN='\033[0;32m'
- RED='\033[0;31m'
- YELLOW='\033[1;33m'
- NC='\033[0m'
- pass() {
- echo -e "${GREEN}✓${NC} $1"
- }
- fail() {
- echo -e "${RED}✗${NC} $1"
- exit 1
- }
- warn() {
- echo -e "${YELLOW}⚠${NC} $1"
- }
- echo "System Information:"
- echo " Platform: $(uname -s)"
- echo " Bash Version: $BASH_VERSION"
- echo " Shell: $SHELL"
- echo ""
- # Test 1: Bash version check
- echo "Test 1: Bash Version Compatibility"
- bash_major="${BASH_VERSION%%.*}"
- if [ "$bash_major" -ge 3 ]; then
- pass "Bash version $BASH_VERSION is compatible (3.2+ required)"
- else
- fail "Bash version $BASH_VERSION is too old (3.2+ required)"
- fi
- # Test 2: Required commands
- echo ""
- echo "Test 2: Required Dependencies"
- for cmd in curl jq; do
- if command -v "$cmd" &> /dev/null; then
- pass "$cmd is installed"
- else
- fail "$cmd is not installed"
- fi
- done
- # Test 3: Script syntax check
- echo ""
- echo "Test 3: Script Syntax Check"
- if bash -n install.sh 2>/dev/null; then
- pass "Script syntax is valid"
- else
- fail "Script has syntax errors"
- fi
- # Test 4: Help command
- echo ""
- echo "Test 4: Help Command"
- if bash install.sh help 2>&1 | grep -q "Usage:"; then
- pass "Help command works"
- else
- fail "Help command failed"
- fi
- # Test 5: List command
- echo ""
- echo "Test 5: List Command"
- if bash install.sh list 2>&1 | grep -q "Available Components"; then
- pass "List command works"
- else
- fail "List command failed"
- fi
- # Test 6: Profile argument parsing
- echo ""
- echo "Test 6: Profile Argument Parsing"
- for profile in essential developer full advanced; do
- if echo "n" | bash install.sh "$profile" 2>&1 | grep -q "Profile:"; then
- pass "Profile '$profile' argument works"
- else
- fail "Profile '$profile' argument failed"
- fi
- done
- # Test 7: Profile with dashes
- echo ""
- echo "Test 7: Profile Arguments with Dashes"
- for profile in --essential --developer --full --advanced; do
- if echo "n" | bash install.sh "$profile" 2>&1 | grep -q "Profile:"; then
- pass "Profile '$profile' argument works"
- else
- fail "Profile '$profile' argument failed"
- fi
- done
- # Test 8: Array operations
- echo ""
- echo "Test 8: Array Operations"
- test_array=()
- test_array+=("item1")
- test_array+=("item2")
- if [ ${#test_array[@]} -eq 2 ]; then
- pass "Array operations work"
- else
- fail "Array operations failed"
- fi
- # Test 9: Parameter expansion
- echo ""
- echo "Test 9: Parameter Expansion"
- test_string="type:id"
- type="${test_string%%:*}"
- id="${test_string##*:}"
- if [ "$type" = "type" ] && [ "$id" = "id" ]; then
- pass "Parameter expansion works"
- else
- fail "Parameter expansion failed"
- fi
- # Test 10: Temp directory creation
- echo ""
- echo "Test 10: Temp Directory Operations"
- test_temp="/tmp/opencode-test-$$"
- mkdir -p "$test_temp"
- if [ -d "$test_temp" ]; then
- pass "Temp directory creation works"
- rm -rf "$test_temp"
- else
- fail "Temp directory creation failed"
- fi
- # Test 11: File operations
- echo ""
- echo "Test 11: File Operations"
- test_file="/tmp/opencode-test-$$.txt"
- echo "test" > "$test_file"
- if [ -f "$test_file" ]; then
- content=$(cat "$test_file")
- if [ "$content" = "test" ]; then
- pass "File operations work"
- rm -f "$test_file"
- else
- fail "File read failed"
- fi
- else
- fail "File write failed"
- fi
- # Test 12: Network connectivity
- echo ""
- echo "Test 12: Network Connectivity"
- if curl -fsSL --max-time 5 https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/README.md > /dev/null 2>&1; then
- pass "Network connectivity to GitHub works"
- else
- warn "Network connectivity test failed (may be offline)"
- fi
- echo ""
- echo "╔════════════════════════════════════════════════════════════════╗"
- echo "║ All Tests Passed! ✓ ║"
- echo "╚════════════════════════════════════════════════════════════════╝"
- echo ""
- echo "Your system is compatible with the OpenCode installer."
- echo "You can safely run:"
- echo " curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash"
- echo ""
|