name: Run tests

on:
  push:
    branches:
      # Push events on main branch
      - main
  pull_request:

jobs:

  tests:

    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-20.04
            database: 'mysql'
            database-version: '5.7'
            php-version: '7.4'
          - os: ubuntu-20.04
            database: 'mysql'
            database-version: '5.7'
            php-version: '8.0'
          - os: ubuntu-20.04
            database: 'mysql'
            database-version: '5.7'
            php-version: '8.1'
          - os: ubuntu-20.04
            database: 'mysql'
            database-version: '5.7'
            php-version: '8.2'
          - os: ubuntu-latest
            database: 'mysql'
            database-version: '8.0'
            php-version: '7.4'
          - os: ubuntu-latest
            database: 'mysql'
            database-version: '8.0'
            php-version: '8.0'
          - os: ubuntu-latest
            database: 'mysql'
            database-version: '8.0'
            php-version: '8.1'
          - os: ubuntu-latest
            database: 'mysql'
            database-version: '8.0'
            php-version: '8.2'
          - os: ubuntu-20.04
            database: 'mariadb'
            database-version: '10.6'
            php-version: '7.4'
          - os: ubuntu-20.04
            database: 'mariadb'
            database-version: '10.6'
            php-version: '8.0'
          - os: ubuntu-20.04
            database: 'mariadb'
            database-version: '10.6'
            php-version: '8.1'
          - os: ubuntu-20.04
            database: 'mariadb'
            database-version: '10.6'
            php-version: '8.2'

    steps:

      - uses: shogo82148/actions-setup-mysql@v1
        with:
          distribution: '${{ matrix.database }}'
          mysql-version: '${{ matrix.database-version }}'
          user: 'travis'
          password: ''
          root-password: 'drupal'

      - name: Checkout code
        uses: actions/checkout@v3
        with:
          fetch-depth: 1
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}

      - name: Validate composer.json
        run: composer validate

      - name: Install Composer dependencies
        run: composer install --prefer-dist --optimize-autoloader --no-progress --no-interaction

      - name: Run PHPunit tests
        run: vendor/bin/phpunit

      - name: Create user and databases for testing
        run: cd tests/scripts && ./create_users.sh 127.0.0.1

      - name: Run test script
        run: cd tests/scripts && ./test.sh 127.0.0.1
