fix: Restore all files lost during destructive rebase
A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.
This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).
Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
239
scripts/test-environment-setup.sh
Executable file
239
scripts/test-environment-setup.sh
Executable file
@@ -0,0 +1,239 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# BreakPilot Environment Setup Tests
|
||||
# ============================================
|
||||
# Tests for environment configuration and scripts
|
||||
#
|
||||
# Usage: ./scripts/test-environment-setup.sh
|
||||
# ============================================
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Test counters
|
||||
TESTS_RUN=0
|
||||
TESTS_PASSED=0
|
||||
TESTS_FAILED=0
|
||||
|
||||
# Test result function
|
||||
test_result() {
|
||||
local name=$1
|
||||
local result=$2
|
||||
TESTS_RUN=$((TESTS_RUN + 1))
|
||||
|
||||
if [ "$result" -eq 0 ]; then
|
||||
echo -e "${GREEN}✓${NC} $name"
|
||||
TESTS_PASSED=$((TESTS_PASSED + 1))
|
||||
else
|
||||
echo -e "${RED}✗${NC} $name"
|
||||
TESTS_FAILED=$((TESTS_FAILED + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE} Environment Setup Tests${NC}"
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# File Existence Tests
|
||||
# ==========================================
|
||||
echo -e "${YELLOW}Testing: File Existence${NC}"
|
||||
|
||||
# Test .gitignore
|
||||
test -f ".gitignore"
|
||||
test_result ".gitignore exists" $?
|
||||
|
||||
# Test .env files
|
||||
test -f ".env.dev"
|
||||
test_result ".env.dev exists" $?
|
||||
|
||||
test -f ".env.staging"
|
||||
test_result ".env.staging exists" $?
|
||||
|
||||
test -f ".env.example"
|
||||
test_result ".env.example exists" $?
|
||||
|
||||
# Test Docker Compose files
|
||||
test -f "docker-compose.yml"
|
||||
test_result "docker-compose.yml exists" $?
|
||||
|
||||
test -f "docker-compose.override.yml"
|
||||
test_result "docker-compose.override.yml exists" $?
|
||||
|
||||
test -f "docker-compose.staging.yml"
|
||||
test_result "docker-compose.staging.yml exists" $?
|
||||
|
||||
# Test Scripts
|
||||
test -x "scripts/env-switch.sh"
|
||||
test_result "scripts/env-switch.sh is executable" $?
|
||||
|
||||
test -x "scripts/start.sh"
|
||||
test_result "scripts/start.sh is executable" $?
|
||||
|
||||
test -x "scripts/stop.sh"
|
||||
test_result "scripts/stop.sh is executable" $?
|
||||
|
||||
test -x "scripts/promote.sh"
|
||||
test_result "scripts/promote.sh is executable" $?
|
||||
|
||||
test -x "scripts/status.sh"
|
||||
test_result "scripts/status.sh is executable" $?
|
||||
|
||||
# Test Documentation
|
||||
test -f "docs/architecture/environments.md"
|
||||
test_result "docs/architecture/environments.md exists" $?
|
||||
|
||||
test -f "docs/guides/environment-setup.md"
|
||||
test_result "docs/guides/environment-setup.md exists" $?
|
||||
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# Environment File Content Tests
|
||||
# ==========================================
|
||||
echo -e "${YELLOW}Testing: Environment File Content${NC}"
|
||||
|
||||
# Test .env.dev content
|
||||
grep -q "ENVIRONMENT=development" .env.dev 2>/dev/null
|
||||
test_result ".env.dev contains ENVIRONMENT=development" $?
|
||||
|
||||
grep -q "COMPOSE_PROJECT_NAME=breakpilot-dev" .env.dev 2>/dev/null
|
||||
test_result ".env.dev contains correct COMPOSE_PROJECT_NAME" $?
|
||||
|
||||
grep -q "POSTGRES_DB=breakpilot_dev" .env.dev 2>/dev/null
|
||||
test_result ".env.dev contains correct POSTGRES_DB" $?
|
||||
|
||||
# Test .env.staging content
|
||||
grep -q "ENVIRONMENT=staging" .env.staging 2>/dev/null
|
||||
test_result ".env.staging contains ENVIRONMENT=staging" $?
|
||||
|
||||
grep -q "COMPOSE_PROJECT_NAME=breakpilot-staging" .env.staging 2>/dev/null
|
||||
test_result ".env.staging contains correct COMPOSE_PROJECT_NAME" $?
|
||||
|
||||
grep -q "POSTGRES_DB=breakpilot_staging" .env.staging 2>/dev/null
|
||||
test_result ".env.staging contains correct POSTGRES_DB" $?
|
||||
|
||||
grep -q "DEBUG=false" .env.staging 2>/dev/null
|
||||
test_result ".env.staging has DEBUG=false" $?
|
||||
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# Docker Compose Syntax Tests
|
||||
# ==========================================
|
||||
echo -e "${YELLOW}Testing: Docker Compose Syntax${NC}"
|
||||
|
||||
# Test docker-compose.override.yml syntax
|
||||
docker compose -f docker-compose.yml -f docker-compose.override.yml config > /dev/null 2>&1
|
||||
test_result "docker-compose.override.yml syntax valid" $?
|
||||
|
||||
# Test docker-compose.staging.yml syntax
|
||||
docker compose -f docker-compose.yml -f docker-compose.staging.yml config > /dev/null 2>&1
|
||||
test_result "docker-compose.staging.yml syntax valid" $?
|
||||
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# Git Repository Tests
|
||||
# ==========================================
|
||||
echo -e "${YELLOW}Testing: Git Repository${NC}"
|
||||
|
||||
# Test git repo exists
|
||||
test -d ".git"
|
||||
test_result "Git repository initialized" $?
|
||||
|
||||
# Test branches exist
|
||||
git branch --list develop | grep -q develop
|
||||
test_result "develop branch exists" $?
|
||||
|
||||
git branch --list staging | grep -q staging
|
||||
test_result "staging branch exists" $?
|
||||
|
||||
git branch --list main | grep -q main
|
||||
test_result "main branch exists" $?
|
||||
|
||||
# Test current branch
|
||||
CURRENT_BRANCH=$(git branch --show-current)
|
||||
[ "$CURRENT_BRANCH" = "develop" ]
|
||||
test_result "Current branch is develop" $?
|
||||
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# .gitignore Tests
|
||||
# ==========================================
|
||||
echo -e "${YELLOW}Testing: .gitignore Content${NC}"
|
||||
|
||||
# Test that .env is ignored but .env.dev is not
|
||||
grep -q "^\.env$" .gitignore 2>/dev/null
|
||||
test_result ".gitignore excludes .env" $?
|
||||
|
||||
grep -q "!\.env\.dev" .gitignore 2>/dev/null
|
||||
test_result ".gitignore includes .env.dev" $?
|
||||
|
||||
grep -q "!\.env\.staging" .gitignore 2>/dev/null
|
||||
test_result ".gitignore includes .env.staging" $?
|
||||
|
||||
grep -q "__pycache__" .gitignore 2>/dev/null
|
||||
test_result ".gitignore excludes __pycache__" $?
|
||||
|
||||
grep -q "node_modules" .gitignore 2>/dev/null
|
||||
test_result ".gitignore excludes node_modules" $?
|
||||
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# Script Functionality Tests
|
||||
# ==========================================
|
||||
echo -e "${YELLOW}Testing: Script Functionality${NC}"
|
||||
|
||||
# Test env-switch.sh creates .env
|
||||
./scripts/env-switch.sh dev > /dev/null 2>&1
|
||||
test -f ".env"
|
||||
test_result "env-switch.sh creates .env file" $?
|
||||
|
||||
# Verify .env content matches .env.dev
|
||||
grep -q "ENVIRONMENT=development" .env 2>/dev/null
|
||||
test_result "env-switch.sh sets correct environment" $?
|
||||
|
||||
# Test switching to staging
|
||||
./scripts/env-switch.sh staging > /dev/null 2>&1
|
||||
grep -q "ENVIRONMENT=staging" .env 2>/dev/null
|
||||
test_result "env-switch.sh can switch to staging" $?
|
||||
|
||||
# Switch back to dev
|
||||
./scripts/env-switch.sh dev > /dev/null 2>&1
|
||||
|
||||
echo ""
|
||||
|
||||
# ==========================================
|
||||
# Summary
|
||||
# ==========================================
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE} Test Summary${NC}"
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "Tests run: $TESTS_RUN"
|
||||
echo -e "Tests passed: ${GREEN}$TESTS_PASSED${NC}"
|
||||
echo -e "Tests failed: ${RED}$TESTS_FAILED${NC}"
|
||||
echo ""
|
||||
|
||||
if [ $TESTS_FAILED -eq 0 ]; then
|
||||
echo -e "${GREEN}All tests passed!${NC}"
|
||||
exit 0
|
||||
else
|
||||
echo -e "${RED}Some tests failed.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user