name: Tests on: push: branches: - 'master' pull_request: branches: - '*' permissions: contents: read jobs: linux-tests: runs-on: ubuntu-latest strategy: fail-fast: false matrix: php-version: - '8.0' db-type: - mysql include: - php-version: '8.0' db-type: pgsql - php-version: '8.0' db-type: sqlite - php-version: '8.1' db-type: mysql services: mysql: image: mysql:5.6 env: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: cakephp_test ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 postgres: image: postgres:9.4 env: POSTGRES_PASSWORD: postgres POSTGRES_DB: cakephp_test ports: - 5432:5432 options: --health-cmd="pg_isready" --health-interval=10s --health-timeout=5s --health-retries=5 redis: image: redis ports: - 6379:6379 memcached: image: memcached ports: - 11211:11211 env: DB: ${{ matrix.db-type }} steps: - name: Checkout uses: actions/checkout@v3 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: apcu, memcache, memcached, redis, mcrypt, pdo_mysql, pdo_pgsql, pdo_sqlite ini-values: | assert.exception=1, zend.assertions=1, error_reporting=-1, log_errors_max_len=0, display_errors=On, apc.enable_cli=1 tools: composer - name: Enable Autoload run: echo "require_once dirname(__DIR__, 2) . DS . 'vendors/autoload.php';" >> app/Config/bootstrap.php - name: locale-gen run: | sudo locale-gen de_DE; sudo locale-gen es_ES; - name: Create Another Databases for MySQL if: matrix.db-type == 'mysql' run: | env MYSQL_PWD=root mysql -h 127.0.0.1 -u root -e 'CREATE DATABASE cakephp_test2;'; env MYSQL_PWD=root mysql -h 127.0.0.1 -u root -e 'CREATE DATABASE cakephp_test3;'; - name: Create Another Databases for PostgreSQL if: matrix.db-type == 'pgsql' run: | env PGPASSWORD=postgres psql -c 'CREATE SCHEMA test2;' -h 127.0.0.1 -U postgres -d cakephp_test; env PGPASSWORD=postgres psql -c 'CREATE SCHEMA test3;' -h 127.0.0.1 -U postgres -d cakephp_test; - name: Make temporary directories writable run: chmod -R 777 ./app/tmp - name: Composer get cache directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache Composer uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }} restore-keys: | ${{ runner.os }}-php${{ matrix.php-version }}-composer- - name: Install Composer Packages run: composer install --no-ansi --no-interaction --no-progress - name: Copy database.php run: cp ./.github/workflows/configs/database.php ./app/Config/ - name: Run Tests run: ./vendors/bin/phpunit --stderr --verbose lib/Cake/Test/Case/AllTestsTest.php