Skip to content

feat(deps): Add Nextcloud 28 support #13763

feat(deps): Add Nextcloud 28 support

feat(deps): Add Nextcloud 28 support #13763

Workflow file for this run

name: Test
on: pull_request
permissions:
contents: read
jobs:
unit-tests:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['8.0', '8.1', '8.2']
nextcloud-versions: ['master']
include:
- php-versions: '8.1'
nextcloud-versions: 'stable26'
name: Nextcloud ${{ matrix.nextcloud-versions }} php${{ matrix.php-versions }} unit tests
steps:
- name: Set up Nextcloud env
uses: ChristophWurst/setup-nextcloud@8bc31fe189b3cb3b44122dede08ce39e8932c554 # v0.3.1
with:
nextcloud-version: ${{ matrix.nextcloud-versions }}
php-version: ${{ matrix.php-versions }}
php-coverage: 'xdebug'
patch-php-version-check: ${{ matrix.php-versions == '8.2' }}
node-version: 'false'
install: true
- name: Checkout Mail
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
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
if: ${{ matrix.php-versions == '8.0' }}
env:
XDEBUG_MODE: coverage
- name: Run tests
working-directory: nextcloud/apps/mail
run: composer run test:unit
if: ${{ matrix.php-versions != '8.0' }}
env:
XDEBUG_MODE: off
- name: Report coverage
uses: codecov/codecov-action@894ff025c7b54547a9a2a1e9f228beae737ad3c2 # v3.1.3
if: ${{ always() && matrix.php-versions == '8.0' }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
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: ['8.0']
nextcloud-versions: ['master']
db: ['sqlite', 'mysql', 'pgsql']
include:
- php-versions: 8.1
nextcloud-versions: stable26
db: 'pgsql'
- php-versions: 8.2
nextcloud-versions: stable26
db: 'sqlite'
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.11
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:15
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 Nextcloud env
uses: ChristophWurst/setup-nextcloud@8bc31fe189b3cb3b44122dede08ce39e8932c554 # v0.3.1
with:
nextcloud-version: ${{ matrix.nextcloud-versions }}
php-version: ${{ matrix.php-versions }}
php-coverage: 'xdebug'
patch-php-version-check: ${{ matrix.php-versions == '8.2' }}
install: true
database: ${{ matrix.db }}
node-version: 'false'
- name: Checkout Mail
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
with:
path: nextcloud/apps/mail
- name: Install dependencies
working-directory: nextcloud/apps/mail
run: composer install
- name: Patch version check for nightly PHP
if: ${{ matrix.php-versions == '8.2' }}
run: sed -i 's/max-version="8.1"/max-version="8.2"/' nextcloud/apps/mail/appinfo/info.xml
- 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: Enable slow mysql query logs
if: ${{ matrix.db == 'mysql' }}
run: |
echo "SET GLOBAL log_queries_not_using_indexes = 1;" | mysql -h 127.0.0.1 -u root -pmy-secret-pw
echo "SET GLOBAL slow_query_log=1;" | mysql -h 127.0.0.1 -u root -pmy-secret-pw
echo "SET GLOBAL log_output = 'table';" | mysql -h 127.0.0.1 -u root -pmy-secret-pw
- name: Run tests
working-directory: nextcloud/apps/mail
if: ${{ matrix.db == 'mysql' }}
run: composer run test:integration
env:
XDEBUG_MODE: coverage
- name: Run tests
working-directory: nextcloud/apps/mail
if: ${{ matrix.db != 'mysql' }}
run: composer run test:integration
env:
XDEBUG_MODE: off
- name: Read slow queries
if: ${{ always() }}
run: echo "SELECT * FROM mysql.slow_log WHERE sql_text LIKE '%oc_mail%' AND sql_text NOT LIKE '%information_schema%'" | mysql -h 127.0.0.1 -u root -pmy-secret-pw
- name: Print debug logs
if: ${{ always() }}
run: cat nextcloud/data/horde_*.log
- name: Report coverage
uses: codecov/codecov-action@894ff025c7b54547a9a2a1e9f228beae737ad3c2 # v3.1.3
if: ${{ always() && matrix.db == 'mysql' }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
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@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions
with:
fallbackNode: '^14'
fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: npm install
run: npm install
- name: run tests
run: npm run test:unit
env:
CI: true
summary:
runs-on: ubuntu-latest
needs:
- unit-tests
- integration-tests
- frontend-unit-test
if: always()
name: test-summary
steps:
- name: Unit test status
run: if ${{ needs.unit-tests.result != 'success' && needs.unit-tests.result != 'skipped' }}; then exit 1; fi
- name: Integration test status
run: if ${{ needs.integration-tests.result != 'success' && needs.integration-tests.result != 'skipped' }}; then exit 1; fi
- name: Frontend unit test status
run: if ${{ needs.frontend-unit-test.result != 'success' && needs.frontend-unit-test.result != 'skipped' }}; then exit 1; fi