clone:
  git:
    image: plugins/git
    depth: 1

pipeline:
  jsunit:
    image: nextcloudci/jsunit:jsunit-5
    commands:
      - ./autotest-js.sh
      - curl -o codecov.sh https://codecov.io/bash
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5; fi"
    when:
      matrix:
        TESTS: jsunit
  checkers:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - ./autotest-checkers.sh
    when:
      matrix:
        TESTS: checkers
  syntax-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    commands:
      - composer install
      - ./lib/composer/bin/parallel-lint --exclude build/.phan/ --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-16
    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
  syntax-php7.1:
    image: nextcloudci/php7.1:php7.1-15
    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.1
  phan:
    image: nextcloudci/php7.1:php7.1-15
    commands:
      - composer install
      - composer require --dev "phan/phan:dev-master"
      - ./lib/composer/phan/phan/phan -k build/.phan/config.php
      - php ./build/.phan/plugin-checker.php
    when:
      matrix:
        TESTS: phan
  litmus-v1:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-6
    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-6
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/litmus-v2/script.sh
    when:
      matrix:
        TESTS: litmus-v2
  caldavtester-new-endpoint:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-6
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/caldav/install.sh
      - bash apps/dav/tests/travis/caldav/script-new-endpoint.sh
    when:
      matrix:
        TESTS: caldavtester-new-endpoint
  caldavtester-old-endpoint:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-6
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/caldav/install.sh
      - bash apps/dav/tests/travis/caldav/script-old-endpoint.sh
    when:
      matrix:
        TESTS: caldavtester-old-endpoint
  carddavtester-new-endpoint:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-6
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/carddav/install.sh
      - bash apps/dav/tests/travis/carddav/script-new-endpoint.sh
    when:
      matrix:
        TESTS: carddavtester-new-endpoint
  carddavtester-old-endpoint:
    image: nextcloudci/litmus-php7.0:litmus-php7.0-6
    commands:
      - bash tests/travis/install.sh sqlite
      - bash apps/dav/tests/travis/carddav/install.sh
      - bash apps/dav/tests/travis/carddav/script-old-endpoint.sh
    when:
      matrix:
        TESTS: carddavtester-old-endpoint
  sqlite-php7.0-samba-native:
      image: nextcloudci/samba-native-php7.0:samba-native-php7.0-3
      commands:
        - smbd -D -FS &
        - ./autotest-external.sh sqlite smb-linux
        - wget https://codecov.io/bash -O codecov.sh
        - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
      when:
        matrix:
          TESTS: sqlite-php7.0-samba-native
  sqlite-php7.0-samba-non-native:
      image: nextcloudci/samba-non-native-php7.0:samba-non-native-php7.0-4
      commands:
        - smbd -D -FS &
        - ./autotest-external.sh sqlite smb-linux
        - wget https://codecov.io/bash -O codecov.sh
        - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
      when:
        matrix:
          TESTS: sqlite-php7.0-samba-non-native
  sqlite-php7.0-webdav-apache:
    image: nextcloudci/webdav-apache-php7.0
    commands:
      - apache2
      - ./autotest-external.sh sqlite webdav-apachedrone
      - wget https://codecov.io/bash -O codecov.sh
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-webdav-apachedrone.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-webdav-apachedrone.xml; fi"
    when:
      matrix:
        TESTS: sqlite-php7.0-webdav-apache
  nodb-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    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-16
    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-15
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: 7.1
  nodb-php7.2:
    image: nextcloudci/php7.2:php7.2-9
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: 7.2
  sqlite-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    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-16
    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-15
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: 7.1
  sqlite-php7.2:
    image: nextcloudci/php7.2:php7.2-9
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: 7.2
  mysql-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: 5.6
  mysql-php7.0:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: "7.0"
  mysql-php7.1:
    image: nextcloudci/php7.1:php7.1-15
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: 7.1
  mysql-php7.2:
    image: nextcloudci/php7.2:php7.2-9
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: 7.2
  mysql5.6-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.6
        PHP: 5.6
  mysql5.6-php7.0:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.6
        PHP: "7.0"
  mysql5.6-php7.1:
    image: nextcloudci/php7.1:php7.1-15
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.6
        PHP: 7.1
  mysql5.5-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.5
        PHP: 5.6
  mysql5.5-php7.0:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.5
        PHP: "7.0"
  mysql5.5-php7.1:
    image: nextcloudci/php7.1:php7.1-15
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.5
        PHP: 7.1
  postgres-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    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
  postgres-php7.0:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - sleep 10 # gives the database enough time to initialize
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
    when:
      matrix:
        DB: postgres
        PHP: "7.0"
  postgres-php7.1:
    image: nextcloudci/php7.1:php7.1-15
    commands:
      - sleep 10 # gives the database enough time to initialize
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
    when:
      matrix:
        DB: postgres
        PHP: 7.1
  mysqlmb4-php5.6:
    image: nextcloudci/php5.6:php5.6-8
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
    when:
      matrix:
        DB: mysqlmb4
        PHP: 5.6
  mysqlmb4-php7.0:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
    when:
      matrix:
        DB: mysqlmb4
        PHP: "7.0"
  mysqlmb4-php7.1:
    image: nextcloudci/php7.1:php7.1-15
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
    when:
      matrix:
        DB: mysqlmb4
        PHP: 7.1
  mysqlmb4-php7.2:
    image: nextcloudci/php7.2:php7.2-9
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
    when:
      matrix:
        DB: mysqlmb4
        PHP: 7.2
  integration-capabilities_features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh capabilities_features/capabilities.feature
    when:
      matrix:
        TESTS: integration-capabilities_features
  integration-federation_features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin
      - cd build/integration
      - ./run.sh federation_features/federated.feature
    when:
      matrix:
        TESTS: integration-federation_features
  integration-auth:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/auth.feature
    when:
      matrix:
        TESTS: integration-auth
  integration-maintenance-mode:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/maintenance-mode.feature
    when:
      matrix:
        TESTS: integration-maintenance-mode
  integration-ratelimiting:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - ./occ config:system:set redis host --value=cache
      - ./occ config:system:set redis port --value=6379 --type=integer
      - ./occ config:system:set redis timeout --value=0 --type=integer
      - ./occ config:system:set --type string --value "\\OC\\Memcache\\Redis" memcache.local
      - ./occ config:system:set --type string --value "\\OC\\Memcache\\Redis" memcache.distributed
      - ./occ app:enable testing
      - cd build/integration
      - ./run.sh features/ratelimiting.feature
    when:
      matrix:
        TESTS: integration-ratelimiting
  integration-carddav:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/carddav.feature
    when:
      matrix:
        TESTS: integration-carddav
  integration-dav-v2:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/dav-v2.feature
    when:
      matrix:
        TESTS: integration-dav-v2
  integration-ocs-v1:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/ocs-v1.feature
    when:
      matrix:
        TESTS: integration-ocs-v1
  integration-sharing-v1:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/sharing-v1.feature
    when:
      matrix:
        TESTS: integration-sharing-v1
  integration-sharing-v1-part2:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/sharing-v1-part2.feature
    when:
      matrix:
        TESTS: integration-sharing-v1-part2
  integration-sharing-v1-part3:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/sharing-v1-part3.feature
    when:
      matrix:
        TESTS: integration-sharing-v1-part3
  integration-checksums-v1:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/checksums.feature
    when:
      matrix:
        TESTS: integration-checksums
  integration-external-storage:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/external-storage.feature
    when:
      matrix:
        TESTS: integration-external-storage
  integration-provisioning-v1:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/provisioning-v1.feature
    when:
      matrix:
        TESTS: integration-provisioning-v1
  integration-tags:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/tags.feature
    when:
      matrix:
        TESTS: integration-tags
  integration-caldav:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/caldav.feature
    when:
      matrix:
        TESTS: integration-caldav
  integration-comments:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/comments.feature
    when:
      matrix:
        TESTS: integration-comments
  integration-favorites:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/favorites.feature
    when:
      matrix:
        TESTS: integration-favorites
  integration-provisioning-v2:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/provisioning-v2.feature
    when:
      matrix:
        TESTS: integration-provisioning-v2
  integration-webdav-related:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/webdav-related.feature
    when:
      matrix:
        TESTS: integration-webdav-related
  integration-sharees-features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh sharees_features/sharees.feature
    when:
      matrix:
        TESTS: integration-sharees-features
  integration-sharees-v2-features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh sharees_features/sharees_provisioningapiv2.feature
    when:
      matrix:
        TESTS: integration-sharees-v2-features
  integration-setup-features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - cd build/integration
      - ./run.sh setup_features/setup.feature
    when:
      matrix:
        TESTS: integration-setup-features
  integration-filesdrop-features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh filesdrop_features/filesdrop.feature
    when:
      matrix:
        TESTS: integration-filesdrop-features
  integration-transfer-ownership-features:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/transfer-ownership.feature
    when:
      matrix:
        TESTS: integration-transfer-ownership-features
  integration-ldap-features:
      image: nextcloudci/integration-php7.0:integration-php7.0-6
      commands:
        - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
        - ./occ app:enable user_ldap
        - cd build/integration
        - ./run.sh ldap_features/ldap-ocs.feature
      when:
        matrix:
          TESTS: integration-ldap-features
  integration-trashbin:
    image: nextcloudci/integration-php7.0:integration-php7.0-6
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/trashbin.feature
    when:
      matrix:
        TESTS: integration-trashbin
  acceptance-access-levels:
      image: nextcloudci/integration-php7.0:integration-php7.0-6
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-access-levels --selenium-server selenium:4444 allow-git-repository-modifications features/access-levels.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: access-levels
  acceptance-app-files:
      image: nextcloudci/integration-php7.0:integration-php7.0-6
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files --selenium-server selenium:4444 allow-git-repository-modifications features/app-files.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: app-files
  acceptance-app-theming:
      image: nextcloudci/integration-php7.0:integration-php7.0-6
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-theming --selenium-server selenium:4444 allow-git-repository-modifications features/app-theming.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: app-theming
  acceptance-login:
      image: nextcloudci/integration-php7.0:integration-php7.0-6
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-login --selenium-server selenium:4444 allow-git-repository-modifications features/login.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: login
  nodb-codecov:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - phpenmod xdebug
      - TEST_SELECTION=NODB ./autotest.sh sqlite
      - wget https://codecov.io/bash -O codecov.sh
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
    when:
      matrix:
        TESTS: nodb-codecov
  db-codecov:
    image: nextcloudci/php7.0:php7.0-16
    commands:
      - phpenmod xdebug
      - TEST_SELECTION=QUICKDB ./autotest.sh sqlite
      - wget https://codecov.io/bash -O codecov.sh
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
    when:
      matrix:
        TESTS: db-codecov
  object-store:
      image: nextcloudci/php7.0:php7.0-16
      commands:
        - phpenmod xdebug
        - TEST_SELECTION=PRIMARY-${OBJECT_STORE} ./autotest.sh sqlite
        - wget https://codecov.io/bash -O codecov.sh
        - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
        - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
      when:
        matrix:
          TESTS: object-store
  memcache-memcached:
    image: nextcloudci/php7.0-memcached:php7.0-memcached-8
    commands:
      - phpenmod xdebug
      - service memcached restart
      - ./autotest.sh sqlite tests/lib/Memcache/MemcachedTest.php
      - wget https://codecov.io/bash -O codecov.sh
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
    when:
      matrix:
        TEST: memcache-memcached
  memcache-redis-cluster:
    image: nextcloudci/php7.0:php7.0-17
    commands:
      - phpenmod xdebug
      - sleep 20
      - ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php
      - wget https://codecov.io/bash -O codecov.sh
      - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
      - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
    when:
      matrix:
        TEST: memcache-redis-cluster
matrix:
  include:
    - TESTS: checkers
    - TESTS: nodb-codecov
      ENABLE_REDIS: true
    - TESTS: db-codecov
      ENABLE_REDIS: true
    - DB: NODB
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: NODB
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: NODB
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: NODB
      PHP: 7.2
      ENABLE_REDIS: false
    - DB: sqlite
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: sqlite
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: sqlite
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: sqlite
      PHP: 7.2
      ENABLE_REDIS: false
    - DB: mysql
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: mysql
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: mysql
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: mysql
      PHP: 7.2
      ENABLE_REDIS: false
    - DB: mysql5.6
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: mysql5.6
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: mysql5.6
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: mysql5.5
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: mysql5.5
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: mysql5.5
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: postgres
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: postgres
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: postgres
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: mysqlmb4
      PHP: 5.6
      ENABLE_REDIS: true
    - DB: mysqlmb4
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: mysqlmb4
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: mysqlmb4
      PHP: 7.2
      ENABLE_REDIS: false
    - TESTS: integration-capabilities_features
    - TESTS: integration-federation_features
    - TESTS: integration-maintenance-mode
    - TESTS: integration-ratelimiting
      ENABLE_REDIS: true
    - TESTS: integration-auth
    - TESTS: integration-carddav
    - TESTS: integration-dav-v2
    - TESTS: integration-ocs-v1
    - TESTS: integration-sharing-v1
    - TESTS: integration-sharing-v1-part2
    - TESTS: integration-sharing-v1-part3
    - TESTS: integration-checksums
    - TESTS: integration-external-storage
    - TESTS: integration-provisioning-v1
    - TESTS: integration-tags
    - TESTS: integration-caldav
    - TESTS: integration-comments
    - TESTS: integration-favorites
    - TESTS: integration-provisioning-v2
    - TESTS: integration-webdav-related
    - TESTS: integration-sharees-features
    - TESTS: integration-sharees-v2-features
    - TESTS: integration-setup-features
    - TESTS: integration-filesdrop-features
    - TESTS: integration-transfer-ownership-features
    - TESTS: integration-ldap-features
    - TESTS: integration-trashbin
    - TESTS: acceptance
      TESTS-ACCEPTANCE: access-levels
    - TESTS: acceptance
      TESTS-ACCEPTANCE: app-files
    - TESTS: acceptance
      TESTS-ACCEPTANCE: app-theming
    - TESTS: acceptance
      TESTS-ACCEPTANCE: login
    - TESTS: jsunit
    - TESTS: syntax-php5.6
    - TESTS: syntax-php7.0
    - TESTS: syntax-php7.1
    - TESTS: phan
    - TESTS: litmus-v1
    - TESTS: litmus-v2
    - TESTS: caldavtester-old-endpoint
    - TESTS: caldavtester-new-endpoint
    - TESTS: carddavtester-new-endpoint
    - TESTS: carddavtester-old-endpoint
    - TESTS: object-store
      OBJECT_STORE: s3
    - TESTS: sqlite-php7.0-samba-native
    - TESTS: sqlite-php7.0-samba-non-native
    - TEST: memcache-memcached
    - TEST: memcache-redis-cluster
      ENABLE_REDIS_CLUSTER: true
    - TESTS: sqlite-php7.0-webdav-apache
      ENABLE_REDIS: true

services:
  cache:
    image: redis
    when:
      matrix:
       ENABLE_REDIS: true
  cache-cluster:
    image: morrisjobke/redis-cluster
    when:
      matrix:
       ENABLE_REDIS_CLUSTER: true
  postgres:
    image: postgres:9
    environment:
      - POSTGRES_USER=oc_autotest
      - POSTGRES_PASSWORD=owncloud
    tmpfs:
      - /var/lib/postgresql/data
    when:
      matrix:
        DB: postgres
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=oc_autotest
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=oc_autotest
    tmpfs:
      - /var/lib/mysql
    when:
      matrix:
        DB: mysql
  mysql:
    image: mysql:5.6
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=oc_autotest
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=oc_autotest
    tmpfs:
      - /var/lib/mysql
    when:
      matrix:
        DB: mysql5.6
  mysql:
    image: mysql:5.5
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=oc_autotest
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=oc_autotest
    tmpfs:
      - /var/lib/mysql
    when:
      matrix:
        DB: mysql5.5
  mysqlmb4:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=oc_autotest
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=oc_autotest
    command: [ "--innodb_large_prefix=true", "--innodb_file_format=barracuda", "--innodb_file_per_table=true" ]
    tmpfs:
      - /var/lib/mysql
    when:
      matrix:
        DB: mysqlmb4
  fake-s3:
      image: lphoward/fake-s3
      when:
        matrix:
          OBJECT_STORE: s3
  selenium:
    image: selenium/standalone-firefox:2.53.1-beryllium
    environment:
      # Reduce default log level for Selenium server (INFO) as it is too
      # verbose.
      - JAVA_OPTS=-Dselenium.LOGGER.level=WARNING
    when:
      matrix:
        TESTS: acceptance

branches: [ master, stable* ]