name: Run unit tests on PR on: pull_request defaults: run: shell: bash concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} timeout-minutes: 20 runs-on: ubuntu-20.04 continue-on-error: ${{ matrix.wp == 'nightly' }} strategy: fail-fast: false matrix: php: [ '7.2', '7.3', '7.4', '8.0' ] wp: [ "latest" ] include: - wp: nightly php: '7.4' - wp: '5.8' php: 7.2 - wp: '5.7' php: 7.2 services: database: image: mysql:5.6 env: MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} tools: composer extensions: mysql coverage: none - name: Tool versions run: | php --version composer --version - name: Get cached composer and pnpm directories uses: actions/cache@v3 id: cache-deps with: path: | ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-version-${{ secrets.WORKFLOW_CACHE }}-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install - name: Install Composer dependencies if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Build Admin feature config run: | pnpm nx build:feature-config woocommerce - name: Add PHP8 Compatibility. run: | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then cd plugins/woocommerce curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip composer bin phpunit config --unset platform composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs rm -rf ./vendor/phpunit/ pnpm nx composer-dump-autoload woocommerce fi - name: Init DB and WP working-directory: plugins/woocommerce run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }} - name: Run tests run: pnpm nx test-unit woocommerce