# This workflow runs tests on MySQLi with the lowest PHP version and Composer dependencies. name: PHPUnit Lowest on: pull_request: branches: - develop paths: - '**.php' - 'composer.*' - 'phpunit*' - '.github/workflows/phpunit-lowest.yml' push: branches: - develop paths: - '**.php' - 'composer.*' - 'phpunit*' - '.github/workflows/phpunit-lowest.yml' workflow_call: inputs: php-version: required: false type: string default: '8.1' db-platform: required: false type: string default: 'MySQLi' mysql-version: required: false type: string default: '5.7' dependencies: required: false type: string default: 'lowest' coveralls-php: required: false type: string default: '8.1' permissions: contents: read jobs: main: name: PHP ${{ inputs['php-version'] }} - ${{ inputs['db-platform'] }} - ${{ inputs['dependencies'] }} runs-on: ubuntu-latest if: (! contains(github.event.head_commit.message, '[ci skip]')) services: mysql: image: mysql:${{ inputs['mysql-version'] }} env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: test ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - name: Check disk space run: df -h - name: Checkout uses: actions/checkout@v5 - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ inputs['php-version'] }} tools: composer, phive, phpunit extensions: intl, json, mbstring, gd, xdebug, xml, sqlite3 coverage: xdebug env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Get composer cache directory run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache composer dependencies uses: actions/cache@v4 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ runner.os }}-composer-lowest-${{ hashFiles('**/composer.json') }}-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer-lowest- - name: Install dependencies run: | if [ -f composer.lock ]; then composer install ${{ env.COMPOSER_UPDATE_FLAGS }} --no-progress --no-interaction --prefer-dist --optimize-autoloader else composer update ${{ env.COMPOSER_UPDATE_FLAGS }} --no-progress --no-interaction --prefer-dist --optimize-autoloader fi env: COMPOSER_UPDATE_FLAGS: ${{ inputs['dependencies'] == 'lowest' && '--prefer-lowest' || '' }} - name: Test with PHPUnit run: vendor/bin/phpunit --coverage-text --testsuite main env: DB: ${{ inputs['db-platform'] }} TERM: xterm-256color TACHYCARDIA_MONITOR_GA: enabled