pipeline:
  clone:
    image: plugins/git
    depth: 1
  jsunit:
    image: nextcloudci/jsunit:1.0.6
    commands:
      - ./autotest-js.sh
    when:
      matrix:
        TESTS: jsunit
  check-autoloader:
    image: nextcloudci/php7.0:php7.0-2
    commands:
      - bash ./build/autoloaderchecker.sh
    when:
      matrix:
        TESTS: check-autoloader
  app-check-code:
    image: nextcloudci/php7.0:php7.0-2
    commands:
      - ./occ app:check-code admin_audit
      - ./occ app:check-code comments
      - ./occ app:check-code federation
      - ./occ app:check-code workflowengine
    when:
      matrix:
        TESTS: app-check-code
  syntax-php5.6:
    image: nextcloudci/php5.6:php5.6-2
    commands:
      - composer install
      - ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
    when:
      matrix:
        TESTS: syntax-php5.6
  syntax-php7.0:
    image: nextcloudci/php7.0:php7.0-2
    commands:
      - composer install
      - ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
    when:
      matrix:
        TESTS: syntax-php7.0
  litmus-v1:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-2
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/litmus-v1/script.sh
    when:
      matrix:
        TESTS: litmus-v1
  litmus-v2:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-2
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/litmus-v2/script.sh
    when:
      matrix:
        TESTS: litmus-v2
  caldavtester:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-2
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/caldav/install.sh
      - bash apps/dav/tests/travis/caldav/script.sh
    when:
      matrix:
        TESTS: caldavtester
  carddavtester:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-2
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/carddav/install.sh
      - bash apps/dav/tests/travis/carddav/script.sh
    when:
      matrix:
        TESTS: carddavtester
  nodb-php5.6:
    image: nextcloudci/php5.6:php5.6-2
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: 5.6
  nodb-php7.0:
    image: nextcloudci/php7.0:php7.0-2
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: "7.0"
  nodb-php7.1:
    image: nextcloudci/php7.1:php7.1-3
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: 7.1
  sqlite-php5.6:
    image: nextcloudci/php5.6:php5.6-2
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: 5.6
  sqlite-php7.0:
    image: nextcloudci/php7.0:php7.0-2
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: "7.0"
  sqlite-php7.1:
    image: nextcloudci/php7.1:php7.1-3
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: 7.1
  mysql-php5.6:
    image: nextcloudci/php5.6:php5.6-2
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: 5.6
  postgres-php5.6:
    image: nextcloudci/php5.6:php5.6-2
    commands:
      - sleep 10 # gives the database enough time to initialize
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
    when:
      matrix:
        DB: postgres
        PHP: 5.6
  integration:
    image: nextcloudci/php7.0:php7.0-2
    commands:
      - ./occ maintenance:install --admin-pass=admin
      - cd build/integration
      - ./run.sh
    when:
      matrix:
        TESTS: integration

matrix:
  include:
    - TESTS: integration
    - TESTS: jsunit
    - TESTS: check-autoloader
    - TESTS: app-check-code
    - TESTS: syntax-php5.6
    - TESTS: syntax-php7.0
    - TESTS: litmus-v1
    - TESTS: litmus-v2
    - TESTS: caldavtester
    - TESTS: carddavtester
    - DB: NODB
      PHP: 5.6
    - DB: NODB
      PHP: 7.0
    - DB: NODB
      PHP: 7.1
    - DB: sqlite
      PHP: 5.6
    - DB: sqlite
      PHP: 7.0
    - DB: sqlite
      PHP: 7.1
    - DB: mysql
      PHP: 5.6
    - DB: postgres
      PHP: 5.6

services:
  cache:
    image: redis
  postgres:
    image: postgres
    environment:
      - POSTGRES_USER=oc_autotest
      - POSTGRES_PASSWORD=oc_autotest
    when:
      matrix:
        DB: postgres
  mysql:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=oc_autotest
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=oc_autotest
    when:
      matrix:
        DB: mysql