################ # Build & Test # ################ kind: pipeline name: run_tests steps: # Check PHP syntax - name: check_php_syntax image: php:8.1-cli commands: - echo "Checking PHP syntax in all files..." - find . -type f -name '*.php' -exec php -l {} \; || echo "PHP syntax errors found!" # Check HTML syntax - name: check_html_syntax image: ubuntu:20.04 commands: - apt-get update - apt-get install -y tidy - echo "Checking HTML syntax in all files..." - find . -type f -name '*.html' -exec tidy -q -e {} \; || echo "HTML syntax errors found!" # Run tests for React client - name: client_test image: node:18-alpine commands: - echo "Running tests for React client..." - cd services/client || echo "services/client directory not found!" - if [ -f package.json ]; then yarn install --frozen-lockfile; CI=true yarn test --coverage; else echo "package.json not found! Skipping client tests."; fi # Run tests for Python backend - name: engine_test image: python:3.9-alpine commands: - echo "Running tests for Python backend..." - cd services/game || echo "services/game directory not found!" - if [ -f requirements.txt ]; then pip install -r requirements.txt; python manage.py recreate_db; pytest --cov=project --cov-report=term-missing; else echo "requirements.txt not found! Skipping backend tests."; fi environment: FLASK_ENV: production APP_SETTINGS: project.config.TestingConfig DATABASE_TEST_URL: postgres://postgres:postgres@gamedb:5432/game_test # Cleanup step - name: cleanup image: alpine:latest commands: - echo "Cleaning up after tests..." - rm -rf /tmp/* - echo "Cleanup complete!" services: - name: gamedb image: postgres:15-alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: game_test