language: php

php:
  - 7.0
  - 7.1
  - 7.2
  - 7.3
  - nightly

matrix:
  allow_failures:
    - php: nightly

sudo: false

if: type = pull_request OR (type = push AND (branch = develop OR branch = master))

cache:
  directories:
    - $HOME/.composer/cache/files

install:
  - travis_retry composer install --no-interaction --no-progress --no-suggest

before_script: git reset --hard HEAD

stages:
  - test
  - code quality
  - code coverage

script:
  - ./vendor/bin/parallel-lint --exclude vendor --exclude storage --exclude tests/fixtures/plugins/testvendor/goto/Plugin.php .
  - ./vendor/bin/phpunit

jobs:
  include:
    - stage: code coverage
      if: type = push AND (branch = develop OR branch = master)
      php: 7.1
      script:
        - ./vendor/bin/phpunit --testsuite "October CMS Test Suite" --coverage-clover=coverage.xml
        - bash <(curl -s https://codecov.io/bash)
    - stage: code quality
      if: type = pull_request
      php: 7.1
      script:
        - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" && git fetch
        - ./vendor/bin/phpcs --colors -nq --report="full" --extensions="php" $(git diff --name-only HEAD origin/$TRAVIS_BRANCH)
    - stage: code quality
      if: type = push AND (branch = develop OR branch = master)
      php: 7.1
      script: ./vendor/bin/phpcs --colors -nq --report="full" --extensions="php" $(git show --name-only --pretty="" $TRAVIS_COMMIT)
