name: Plugin PHPUnit Tests

on: 
  push:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest

    services:
      mysql:
        image: mariadb:10.6
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
        ports:
          - 3306:3306

    steps:

    - uses: actions/checkout@v4

    # ------------------------
    # Cache Composer
    # ------------------------
    - name: Cache Composer files
      uses: actions/cache@v4
      with:
        path: vendor
        key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
        restore-keys: |
          ${{ runner.os }}-composer-

    # ------------------------
    # Cache WordPress test suite
    # ------------------------
    - name: Cache WP Test Suite
      uses: actions/cache@v4
      with:
        path: |
          /tmp/wordpress-tests-lib
          /tmp/wordpress
        key: ${{ runner.os }}-wp-tests-${{ hashFiles('bin/install-wp-tests.sh') }}
        restore-keys: |
          ${{ runner.os }}-wp-tests-

    #- name: Install svn
    #  run: sudo apt-get update && sudo apt-get install -y subversion

    
    #- name: Cache APT
    #  uses: awalsh128/cache-apt-pkgs-action@v1
    #  with:
    #    packages: subversion
    #    version: 1.0

    # ------------------------
    # Setup PHP
    # ------------------------
    - uses: shivammathur/setup-php@v2
      with:
        php-version: 8.2
        extensions: mbstring, mysql, mysqli
        tools: composer

    # ------------------------
    # Install WP Test Suite
    # ------------------------
    - name: Install WP Test Suite
      run: bash bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 latest

    # ------------------------
    # Install Composer deps
    # ------------------------
    - name: Install Composer deps
      run: composer install --no-interaction --prefer-dist

    # ------------------------
    # Run PHPUnit
    # ------------------------
    - name: Run PHPUnit
      run: vendor/bin/phpunit
