name: Test on: pull_request: push: branches: - master - stable* jobs: unit-tests: runs-on: ubuntu-latest strategy: matrix: php-versions: [7.3, 7.4] nextcloud-versions: ['stable20', 'stable21', 'stable22', 'master'] include: - php: 8.0 nextcloud-version: master name: Nextcloud ${{ matrix.nextcloud-versions }} php${{ matrix.php-versions }} unit tests steps: - name: Set up php${{ matrix.php-versions }} uses: shivammathur/setup-php@master with: php-version: ${{ matrix.php-versions }} tools: composer:v1 extensions: ctype,curl,dom,gd,iconv,intl,json,mbstring,openssl,posix,sqlite,xml,zip,gmp coverage: xdebug - name: Checkout Nextcloud run: git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b ${{ matrix.nextcloud-versions }} nextcloud - name: Install Nextcloud run: php -f nextcloud/occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database sqlite --database-pass='' - name: Fix php-parser on stable20 incompatibility with phpunit 9.3+ if: ${{ matrix.nextcloud-versions == 'stable20' }} working-directory: nextcloud/3rdparty run: composer require nikic/php-parser:4.10 - name: Checkout Mail uses: actions/checkout@master with: path: nextcloud/apps/mail - name: Install dependencies working-directory: nextcloud/apps/mail run: composer install - name: Run tests working-directory: nextcloud/apps/mail run: composer run test:unit env: XDEBUG_MODE: coverage - name: Report coverage uses: codecov/codecov-action@v2.1.0 if: ${{ always() && matrix.nextcloud-versions == 'master' }} with: file: ./nextcloud/apps/mail/tests/clover.unit.xml flags: unittests fail_ci_if_error: true integration-tests: runs-on: ubuntu-latest strategy: matrix: php-versions: [7.4, 8.0] nextcloud-versions: ['master'] db: ['sqlite', 'mysql', 'pgsql'] name: php${{ matrix.php-versions }}-${{ matrix.db }} integration tests services: mail-service: image: christophwurst/imap-devel env: MAILNAME: mail.domain.tld MAIL_ADDRESS: user@domain.tld MAIL_PASS: mypassword ports: - 25:25 - 143:143 - 993:993 - 4190:4190 mysql-service: image: mariadb:10.5 env: MYSQL_ROOT_PASSWORD: my-secret-pw MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: nextcloud ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 postgres-service: image: postgres env: POSTGRES_USER: nextcloud POSTGRES_DB: nextcloud POSTGRES_PASSWORD: nextcloud ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Set up php${{ matrix.php-versions }} uses: shivammathur/setup-php@master with: php-version: ${{ matrix.php-versions }} tools: composer:v1 extensions: ctype,curl,dom,gd,iconv,intl,json,mbstring,openssl,posix,sqlite,xml,zip,gmp coverage: xdebug - name: Checkout Nextcloud run: git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b ${{ matrix.nextcloud-versions }} nextcloud - name: Install Nextcloud run: php -f nextcloud/occ maintenance:install --database-host 127.0.0.1 --database-name nextcloud --database-user nextcloud --database-pass nextcloud --admin-user admin --admin-pass admin --database ${{ matrix.db }} - name: Checkout Mail uses: actions/checkout@master with: path: nextcloud/apps/mail - name: Install dependencies working-directory: nextcloud/apps/mail run: composer install - name: Install Mail run: php -f nextcloud/occ app:enable mail - name: Configure Nextcloud for testing run: | php -f nextcloud/occ config:system:set debug --type bool --value true php -f nextcloud/occ config:system:set app.mail.verify-tls-peer --type bool --value false - name: Run tests working-directory: nextcloud/apps/mail run: | ss -tunlp true | openssl s_client -crlf -connect 127.0.0.1:993 composer run test:integration env: XDEBUG_MODE: coverage - name: Print debug logs if: ${{ always() }} run: cat nextcloud/data/horde_*.log - name: Report coverage uses: codecov/codecov-action@v2.1.0 if: ${{ always() && matrix.db == 'mysql' }} with: file: ./nextcloud/apps/mail/tests/clover.integration.xml flags: integrationtests fail_ci_if_error: true frontend-unit-test: runs-on: ubuntu-latest name: Front-end unit tests steps: - uses: actions/checkout@master - name: Set up Node uses: actions/setup-node@v2.4.0 with: node-version: 12.x - name: npm install run: npm install - name: run tests run: npm run test env: CI: true