language: php

node_js:
    - "0.10"

matrix:
  fast_finish: true

  include:
    - php: 7
      env: UNIT_TESTS=yes FUNCTIONAL_TESTS=yes ACCEPTANCE_TESTS=no JSUNIT_TESTS=yes PHP_LINT=yes XLF_CHECK=yes SUBMODULE_TEST=yes  EXCEPTIONCODE_TEST=yes

sudo: false

addons:
  apt:
    packages:
      - parallel
      - ack-grep
      - nginx
      - realpath

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

services:
  - memcached
  - redis-server

notifications:
  irc:
    channels:
      - "irc.freenode.net#typo3-cms"
    on_success: change
    on_failure: always
    use_notice: true
  slack:
    rooms:
      secure: nHWVTPyG3CQWIcYA1LASS11dD0/NBcmrAyr3xxQW0XYtH47ZUKRlEtxrVLuL7ptciNwMbfZgsiRQ1QGWDerHUlBkg0iwRxpUZgeylzWaiXsHFVAp2IBfEX54KrWeYm9gewIBDDtnp+sLgpXGgmpIs2bAGkZe5129UsUExoWh0+g=
    on_success: change
    on_failure: always
  webhooks:
    urls:
      - http://www.t3bot.de/hooks/travis/index.php
    on_success: always
    on_failure: always
    on_start: never

before_script:
  - phpenv config-rm xdebug.ini
  - echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
  - echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
  - composer install
  - typo3/sysext/core/Build/Configuration/TravisNginxFpm/ConfigureStartNginxFpm.sh
  - mkdir -p typo3temp/var/tests
  - export typo3DatabaseName="typo3"
  - export typo3DatabaseHost="localhost"
  - export typo3DatabaseUsername="root"
  - export typo3DatabasePassword=""

before_install:
    - export DISPLAY=:99.0
    - sh -e /etc/init.d/xvfb start

script:
  - >
    if [[ "$UNIT_TESTS" == "yes" ]]; then
      ./bin/phpunit -c typo3/sysext/core/Build/UnitTests.xml
    fi

  - >
    if [[ "$FUNCTIONAL_TESTS" == "yes" ]]; then
      ./typo3/sysext/core/Build/Scripts/splitFunctionalTests.sh 10
      parallel --jobs 4 -a <(seq 0 9) --gnu './bin/phpunit -c typo3/sysext/core/Build/FunctionalTests-Job-{}.xml'
    fi

  - >
    if [[ "$ACCEPTANCE_TESTS" == "yes" ]]; then
      ./bin/codecept run Acceptance -c typo3/sysext/core/Build/AcceptanceTests.yml --debug
    fi

  - >
    if [[ "$JSUNIT_TESTS" == "yes" ]]; then
      cd Build && npm install && cd ..
      ./Build/node_modules/karma/bin/karma start typo3/sysext/core/Build/Configuration/JSUnit/karma.conf.js --single-run
    fi

  - >
    if [[ "$PHP_LINT" == "yes" ]]; then
      find typo3/ -name \*.php -not -path "vendor/*" | parallel --jobs 6 --gnu php -d display_errors=stderr -l {} > /dev/null \;
    fi

  - >
    if [[ "$XLF_CHECK" == "yes" ]]; then
      ./typo3/sysext/core/Build/Scripts/xlfcheck.sh
    fi

  - >
    if [[ "$SUBMODULE_TEST" == "yes" ]]; then
      /bin/bash -c "
        if [[ `git submodule status 2>&1 | wc -l` -ne 0 ]]; then
          echo \"Found a submodule definition in repository\";
          exit 99;
        fi
      "
    fi

  - >
    if [[ "$EXCEPTIONCODE_TEST" == "yes" ]]; then
      ./typo3/sysext/core/Build/Scripts/duplicateExceptionCodeCheck.sh
    fi
