on:
  push:
  schedule:
    - cron: 0 10 1 * *

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php:
          - 7.1
          - 7.2
          - 7.3
          - 7.4-rc
        composer:
          - ""
          - "--prefer-lowest"

    steps:
      - uses: actions/checkout@v1

      - name: Create Docker Container
        run: |
          docker build . -t ci-image --build-arg PHP_VERSION=${{ matrix.php }}
          docker run --interactive --detach --volume ${{ github.workspace }}:/app --name ci ci-image

      - name: Install Dependencies
        run: docker exec ci composer update --no-interaction --no-ansi --prefer-dist ${{ matrix.composer }}

      - name: PHPUnit
        run: docker exec ci vendor/bin/phpunit

      - name: Composer Validate
        run: docker exec ci composer validate --strict

  windows:
    runs-on: windows-2019
    steps:
      - uses: actions/checkout@master
      - uses: nanasess/setup-php@master
      - uses: nanasess/composer-installer-action@master
      - name: Install dependencies
        run: composer update
      - name: Run test suite
        run: vendor/bin/phpunit
