Skip to content

Merge pull request #910 from bavix/test-10x #1497

Merge pull request #910 from bavix/test-10x

Merge pull request #910 from bavix/test-10x #1497

Workflow file for this run

name: phpunits
on:
push:
branches: [ 10.x ]
pull_request:
branches: [ 10.x ]
env:
MEMCACHED_HOST: localhost
REDIS_HOST: localhost
REDIS_PORT: 6379
MEMCACHED_PORT: 11211
jobs:
units:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [8.1, 8.2, 8.3]
laravel-versions: [^10.0, ^11.0]
databases: [testing, pgsql, mysql, mariadb]
caches: [array, redis, memcached, database]
locks: [redis, memcached]
services:
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 6379:6379
memcached:
image: memcached
options: >-
--health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 11211:11211
pgsql:
image: postgres
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: wallet
POSTGRES_DB: wallet
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 5432:5432
mysql:
image: bitnami/mysql:8.0
env:
MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
MYSQL_ROOT_PASSWORD: wallet
MYSQL_DATABASE: wallet
options: >-
--health-cmd="mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 3306:3306
mariadb:
image: mariadb:10.10
env:
MYSQL_ROOT_PASSWORD: wallet
MYSQL_DATABASE: wallet
options: >-
--health-cmd="mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 3307:3306
steps:
- name: Checkout
id: git-checkout
uses: actions/checkout@v4
- name: Setup PHP
id: php-install
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, pgsql, mysql, sqlite, redis, memcached, bcmath
coverage: pcov
env:
runner: self-hosted
- name: Validate composer.json and composer.lock
id: composer-validate
run: composer validate --strict
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
id: composer-dependencies
run: composer req --dev laravel/framework:${{ matrix.laravel-versions }} -W || composer install
- name: Check codeclimate
id: codeclimate-check
run: echo "execute=${{ matrix.php-versions == '8.3' && matrix.caches == 'array' && matrix.databases == 'testing' }}" >> $GITHUB_OUTPUT
- name: Prepare codeclimate
id: codeclimate-prepare
run: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
if: ${{ steps.codeclimate-check.outputs.execute == 'true' }}
- name: Prepare run test suite
id: unit-prepare
run: |
mkdir build
- name: Run test suite
id: unit-run
run: |
if [[ $DB_CONNECTION == "mariadb" ]]; then
composer unit
else
composer parabench
fi
env:
WALLET_CACHE_DRIVER: ${{ matrix.caches }}
WALLET_LOCK_DRIVER: ${{ matrix.locks }}
DB_CONNECTION: ${{ matrix.databases }}
- name: Run mutation test suite
id: infect-run
run: composer infect
env:
WALLET_CACHE_DRIVER: ${{ matrix.caches }}
WALLET_LOCK_DRIVER: ${{ matrix.locks }}
DB_CONNECTION: ${{ matrix.databases }}
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
if: ${{ steps.codeclimate-check.outputs.execute == 'true' }}
- name: Send coverage
id: codeclimate-send
uses: nick-fields/retry@v2
with:
timeout_seconds: 15
max_attempts: 3
command: >-
./cc-test-reporter after-build --coverage-input-type clover --exit-code 0;
bash <(curl -s https://codecov.io/bash)
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
if: ${{ steps.codeclimate-check.outputs.execute == 'true' }}