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
  vue-build-settings:
    image: node
    commands:
     - ./build/vue-builds.sh ./settings/js/settings-vue.js
    when:
      matrix:
        TESTS: vue-build-settings
  vue-build-updatenotification:
    image: node
    commands:
     - ./build/vue-builds.sh ./apps/updatenotification/js/updatenotification.js
    when:
      matrix:
        TESTS: vue-build-updatenotification
  vue-build-oauth2:
    image: node
    commands:
     - ./build/vue-builds.sh ./apps/oauth2/js/oauth2.js
    when:
      matrix:
        TESTS: vue-build-oauth2
  vue-build-accessibility:
    image: node
    commands:
     - ./build/vue-builds.sh ./apps/accessibility/js/accessibility.js
    when:
      matrix:
        TESTS: vue-build-accessibility
  vue-build-backupcodes:
    image: node
    commands:
      - ./build/vue-builds.sh ./apps/twofactor_backupcodes/js/settings.js
    when:
      matrix:
        TESTS: vue-build-backupscodes
  checkers:
    image: nextcloudci/php7.0:php7.0-19
    commands:
      - ./autotest-checkers.sh
    secrets: [ github_token ]
    when:
      matrix:
        TESTS: checkers
  handlebars:
    image: node
    commands:
      - npm install handlebars -g
      - ./build/compile-handlebars-templates.sh
    when:
      matrix:
        TESTS: handlebars
  syntax-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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 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-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 lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
    when:
      matrix:
        TESTS: syntax-php7.1
  syntax-php7.2:
    image: nextcloudci/php7.2:php7.2-12
    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 lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php --exclude 3rdparty/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php .
    when:
      matrix:
        TESTS: syntax-php7.2
  syntax-php7.3:
    image: nextcloudci/php7.3:php7.3-1
    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 --exclude 3rdparty/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php .
    when:
      matrix:
        TESTS: syntax-php7.3
  phan:
    image: nextcloudci/php7.2:php7.2-12
    commands:
      - composer install
      - composer require --dev "phan/phan:0.11.1"
      - ./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-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    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-11
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: 7.2
  nodb-php7.3:
    image: nextcloudci/php7.3:php7.3-1
    commands:
      - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
    when:
      matrix:
        DB: NODB
        PHP: 7.3
  sqlite-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    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-12
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: 7.2
  sqlite-php7.3:
    image: nextcloudci/php7.3:php7.3-1
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
    when:
      matrix:
        DB: sqlite
        PHP: 7.3
  mysql-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    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-12
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: 7.2
  mysql-php7.3:
    image: nextcloudci/php7.3:php7.3-1
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql
        PHP: 7.3
  mysql5.6-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.6
        PHP: 7.1
  mysql5.5-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
    when:
      matrix:
        DB: mysql5.5
        PHP: 7.1
  postgres-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    commands:
      - sleep 10 # gives the database enough time to initialize
      - POSTGRES=${POSTGRES} NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
    when:
      matrix:
        DB: postgres
        PHP: 7.1
  mysqlmb4-php7.0:
    image: nextcloudci/php7.0:php7.0-19
    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-16
    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-12
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
    when:
      matrix:
        DB: mysqlmb4
        PHP: 7.2
  mysqlmb4-php7.3:
    image: nextcloudci/php7.3:php7.3-1
    commands:
      - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
    when:
      matrix:
        DB: mysqlmb4
        PHP: 7.3
  integration-capabilities_features:
    image: nextcloudci/integration-php7.0:integration-php7.0-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-comments-search:
    image: nextcloudci/integration-php7.0:integration-php7.0-8
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh features/comments-search.feature
    when:
      matrix:
        TESTS: integration-comments-search
  integration-favorites:
    image: nextcloudci/integration-php7.0:integration-php7.0-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
    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-8
      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-ldap-openldap-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-openldap.feature
      when:
        matrix:
          TESTS: integration-ldap-openldap-features
  integration-ldap-openldap-uid-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/openldap-uid-username.feature
        when:
          matrix:
            TESTS: integration-ldap-openldap-uid-features
  integration-ldap-openldap-numerical-id-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/openldap-numerical-id.feature
    when:
      matrix:
        TESTS: integration-ldap-openldap-numerical-id-features
  integration-trashbin:
    image: nextcloudci/integration-php7.0:integration-php7.0-8
    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
  integration-remote-api:
    image: nextcloudci/integration-php7.0:integration-php7.0-8
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh remoteapi_features/remote.feature
    when:
      matrix:
        TESTS: integration-remote-api
  integration-download:
    image: nextcloudci/integration-php7.0:integration-php7.0-8
    commands:
      - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
      - cd build/integration
      - ./run.sh --tags ~@large features/download.feature
    when:
      matrix:
        TESTS: integration-download
  acceptance-access-levels:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      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-comments:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-comments --selenium-server selenium:4444 allow-git-repository-modifications features/app-comments.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: app-comments
  acceptance-app-files:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      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-files-tags:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files-tags --selenium-server selenium:4444 allow-git-repository-modifications features/app-files-tags.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: app-files-tags
  acceptance-app-theming:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      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-header:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-header --selenium-server selenium:4444 allow-git-repository-modifications features/header.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: header
  acceptance-login:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      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
  acceptance-users:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-users --selenium-server selenium:4444 allow-git-repository-modifications features/users.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: users
  acceptance-apps:
      image: nextcloudci/acceptance-php7.1:acceptance-php7.1-2
      commands:
        - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-apps --selenium-server selenium:4444 allow-git-repository-modifications features/apps.feature
      when:
        matrix:
          TESTS-ACCEPTANCE: apps
  nodb-codecov:
    image: nextcloudci/php7.0:php7.0-19
    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-19
    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-19
      commands:
        - phpenmod xdebug
        - ./tests/drone-wait-objectstore.sh
        - 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-9
    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-19
    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
  ui-regression:
    image: nextcloudci/ui-regression:ui-regression-1
    commands:
      - cd tests/ui-regression
      - npm install
      - chown -R pptruser out node_modules
      - bash -c "until curl -s http://ui-regression-php-master > /dev/null && curl -s http://ui-regression-php > /dev/null; do sleep 2; done"
      - sudo -u pptruser node runTests.js || true
      - echo "The result can be found at https://s3.bitgrid.net/nextcloud-ui-regression/nextcloud/server/${DRONE_PULL_REQUEST}/index.html"
    shm_size: '1gb'
    when:
      matrix:
        TESTS: ui-regression
  publish-s3:
    image: plugins/s3
    endpoint: https://ci-assets.nextcloud.com
    bucket: nextcloud-ui-regression
    path_style: true
    source: tests/ui-regression/out/**/*
    strip_prefix: tests/ui-regression/out/
    acl: public-read
    target: ${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_PULL_REQUEST}
    secrets: [ aws_access_key_id, aws_secret_access_key ]
    when:
      matrix:
        TESTS: ui-regression
matrix:
  include:
    - TESTS: checkers
    - TESTS: vue-build-settings
    - TESTS: vue-build-updatenotification
    - TESTS: vue-build-oauth2
    - TESTS: vue-build-accessibility
    - TESTS: vue-build-backupcodes
    - TESTS: handlebars
    - TESTS: nodb-codecov
      ENABLE_REDIS: true
    - TESTS: db-codecov
      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: NODB
      PHP: 7.3
      ENABLE_REDIS: false
    - 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: sqlite
      PHP: 7.3
      ENABLE_REDIS: false
    - 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: mysql
      PHP: 7.3
      ENABLE_REDIS: false
    - DB: mysql5.6
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: mysql5.6
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: mysql5.5
      PHP: 7.0
      ENABLE_REDIS: true
    - DB: mysql5.5
      PHP: 7.1
      ENABLE_REDIS: true
    - DB: postgres
      PHP: 7.0
      POSTGRES: 9
      ENABLE_REDIS: true
    - DB: postgres
      PHP: 7.1
      POSTGRES: 9
      ENABLE_REDIS: true
    - DB: postgres
      PHP: 7.1
      POSTGRES: 10
      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
    - DB: mysqlmb4
      PHP: 7.3
      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-comments-search
    - 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-ldap-openldap-features
      ENABLE_OPENLDAP: true
    - TESTS: integration-ldap-openldap-uid-features
      ENABLE_OPENLDAP: true
    - TESTS: integration-ldap-openldap-numerical-id-features
      ENABLE_OPENLDAP: true
    - TESTS: integration-trashbin
    - TESTS: integration-remote-api
    - TESTS: integration-download
    - TESTS: acceptance
      TESTS-ACCEPTANCE: access-levels
    - TESTS: acceptance
      TESTS-ACCEPTANCE: app-comments
    - TESTS: acceptance
      TESTS-ACCEPTANCE: app-files
    - TESTS: acceptance
      TESTS-ACCEPTANCE: app-files-tags
    - TESTS: acceptance
      TESTS-ACCEPTANCE: app-theming
    - TESTS: acceptance
      TESTS-ACCEPTANCE: header
    - TESTS: acceptance
      TESTS-ACCEPTANCE: login
    - TESTS: acceptance
      TESTS-ACCEPTANCE: users
    - TESTS: acceptance
      TESTS-ACCEPTANCE: apps
    - TESTS: jsunit
    - TESTS: syntax-php7.0
    - TESTS: syntax-php7.1
    - TESTS: syntax-php7.2
    - TESTS: syntax-php7.3
    - 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: object-store
      OBJECT_STORE: azure
#    - TESTS: object-store
#      OBJECT_STORE: swift
#      SWIFT-AUTH: v2.0
#    - TESTS: object-store
#      OBJECT_STORE: swift
#      SWIFT-AUTH: v3
    - 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
    - TESTS: ui-regression

services:
  cache:
    image: redis
    when:
      matrix:
       ENABLE_REDIS: true
  ui-regression-php:
    image: nextcloudci/server:server-1
    commands:
      - . /etc/apache2/envvars
      - rm -fr /var/www/html
      - mkdir /var/www/html && cp -rT . /var/www/html && chown -R www-data:www-data /var/www/html
      - rm -fr /var/www/html/config/config.php /var/www/html/data/*
      - apache2 -DFOREGROUND
    when:
      matrix:
        TESTS: ui-regression
  ui-regression-php-master:
    image: nextcloudci/server:server-1
    commands:
      - . /etc/apache2/envvars
      - rm -fr /var/www/html/config/config.php /var/www/html/data/*
      - su www-data -c "cd /var/www/html/ && git checkout $DRONE_REPO_BRANCH && git pull && git submodule update"
      - apache2 -DFOREGROUND 
    when:
      matrix:
        TESTS: ui-regression
  cache-cluster:
    image: morrisjobke/redis-cluster
    when:
      matrix:
       ENABLE_REDIS_CLUSTER: true
  postgres-9:
    image: postgres:9
    environment:
      - POSTGRES_USER=oc_autotest
      - POSTGRES_DB=oc_autotest_dummy
      - POSTGRES_PASSWORD=owncloud
    tmpfs:
      - /var/lib/postgresql/data
    when:
      matrix:
        DB: postgres
        POSTGRES: 9
  postgres-10:
      image: postgres:10
      environment:
        - POSTGRES_USER=oc_autotest
        - POSTGRES_DB=oc_autotest_dummy
        - POSTGRES_PASSWORD=owncloud
      tmpfs:
        - /var/lib/postgresql/data
      when:
        matrix:
          DB: postgres
          POSTGRES: 10
  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:5.7.22
    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
  azurite:
      image: arafato/azurite
      environment:
      - executable=blob
      when:
        matrix:
          OBJECT_STORE: azure
  dockswift:
      image: icewind1991/dockswift:nextcloud-ci
      environment:
      - IPADDRESS=dockswift
      when:
        matrix:
          OBJECT_STORE: swift
  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
  openldap:
    image: nextcloudci/openldap:openldap-5
    environment:
      - SLAPD_DOMAIN=nextcloud.ci
      - SLAPD_ORGANIZATION=Nextcloud
      - SLAPD_PASSWORD=admin
      - SLAPD_ADDITIONAL_MODULES=memberof
    when:
      matrix:
        ENABLE_OPENLDAP: true

branches: [ master, stable* ]