- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
209 lines
5.7 KiB
YAML
209 lines
5.7 KiB
YAML
name: EasyStream Test Suite
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, develop ]
|
|
pull_request:
|
|
branches: [ main, develop ]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.6
|
|
env:
|
|
MYSQL_ROOT_PASSWORD: test
|
|
MYSQL_DATABASE: easystream_test
|
|
MYSQL_USER: test
|
|
MYSQL_PASSWORD: test
|
|
ports:
|
|
- 3306:3306
|
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
|
|
|
redis:
|
|
image: redis:6
|
|
ports:
|
|
- 6379:6379
|
|
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: '8.2'
|
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, redis, imagick, gd
|
|
coverage: xdebug
|
|
|
|
- name: Validate composer.json and composer.lock
|
|
run: composer validate --strict
|
|
|
|
- name: Cache Composer packages
|
|
id: composer-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: vendor
|
|
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-php-
|
|
|
|
- name: Install dependencies
|
|
run: composer install --prefer-dist --no-progress --no-suggest
|
|
|
|
- name: Create test directories
|
|
run: |
|
|
mkdir -p tests/temp
|
|
mkdir -p tests/fixtures
|
|
mkdir -p tests/coverage
|
|
mkdir -p tests/results
|
|
mkdir -p f_data/logs/test
|
|
mkdir -p f_data/uploads/test
|
|
mkdir -p f_data/cache/test
|
|
chmod -R 777 f_data
|
|
|
|
- name: Wait for MariaDB
|
|
run: |
|
|
while ! mysqladmin ping -h"127.0.0.1" -P3306 -utest -ptest --silent; do
|
|
sleep 1
|
|
done
|
|
|
|
- name: Setup test database
|
|
run: |
|
|
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < __install/easystream.sql
|
|
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < tests/fixtures/test_data.sql
|
|
|
|
- name: Run PHPUnit tests
|
|
env:
|
|
DB_HOST: 127.0.0.1
|
|
DB_NAME: easystream_test
|
|
DB_USER: test
|
|
DB_PASS: test
|
|
REDIS_HOST: 127.0.0.1
|
|
REDIS_PORT: 6379
|
|
TESTING: true
|
|
run: composer run-script test-ci
|
|
|
|
- name: Upload coverage reports to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
file: ./tests/coverage/clover.xml
|
|
flags: unittests
|
|
name: codecov-umbrella
|
|
fail_ci_if_error: false
|
|
|
|
- name: Archive test results
|
|
uses: actions/upload-artifact@v3
|
|
if: always()
|
|
with:
|
|
name: test-results
|
|
path: |
|
|
tests/results/
|
|
tests/coverage/
|
|
|
|
- name: Run security tests
|
|
env:
|
|
DB_HOST: 127.0.0.1
|
|
DB_NAME: easystream_test
|
|
DB_USER: test
|
|
DB_PASS: test
|
|
REDIS_HOST: 127.0.0.1
|
|
TESTING: true
|
|
run: composer run-script test-security
|
|
|
|
- name: Run performance tests
|
|
env:
|
|
DB_HOST: 127.0.0.1
|
|
DB_NAME: easystream_test
|
|
DB_USER: test
|
|
DB_PASS: test
|
|
REDIS_HOST: 127.0.0.1
|
|
TESTING: true
|
|
run: composer run-script test-performance
|
|
|
|
code-quality:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: '8.2'
|
|
extensions: mbstring, xml, ctype, iconv, intl
|
|
|
|
- name: Install dependencies
|
|
run: composer install --prefer-dist --no-progress --no-suggest
|
|
|
|
- name: Check PHP syntax
|
|
run: find . -name "*.php" -not -path "./vendor/*" -not -path "./f_core/f_classes/class_adodb/*" -not -path "./f_core/f_classes/class_smarty/*" | xargs -I {} php -l {}
|
|
|
|
- name: Run code style checks (if configured)
|
|
run: |
|
|
if [ -f "phpcs.xml" ]; then
|
|
./vendor/bin/phpcs
|
|
else
|
|
echo "No code style configuration found, skipping..."
|
|
fi
|
|
continue-on-error: true
|
|
|
|
integration-test:
|
|
runs-on: ubuntu-latest
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.6
|
|
env:
|
|
MYSQL_ROOT_PASSWORD: test
|
|
MYSQL_DATABASE: easystream_test
|
|
MYSQL_USER: test
|
|
MYSQL_PASSWORD: test
|
|
ports:
|
|
- 3306:3306
|
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
|
|
|
redis:
|
|
image: redis:6
|
|
ports:
|
|
- 6379:6379
|
|
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: '8.2'
|
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, redis, imagick, gd
|
|
|
|
- name: Install dependencies
|
|
run: composer install --prefer-dist --no-progress --no-suggest
|
|
|
|
- name: Setup test environment
|
|
run: |
|
|
mkdir -p tests/temp tests/fixtures tests/coverage tests/results
|
|
mkdir -p f_data/logs/test f_data/uploads/test f_data/cache/test
|
|
chmod -R 777 f_data
|
|
|
|
- name: Setup test database
|
|
run: |
|
|
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < __install/easystream.sql
|
|
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < tests/fixtures/test_data.sql
|
|
|
|
- name: Run integration tests
|
|
env:
|
|
DB_HOST: 127.0.0.1
|
|
DB_NAME: easystream_test
|
|
DB_USER: test
|
|
DB_PASS: test
|
|
REDIS_HOST: 127.0.0.1
|
|
TESTING: true
|
|
run: composer run-script test-integration
|