From 3df10cb0dceea7a033d3791b1e7ea745244af1bd Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Sun, 23 Jul 2023 02:46:54 +0000 Subject: [PATCH 1/3] chore(dev-deps): Bump nextcloud/ocp package Signed-off-by: GitHub --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 9277846d..0115a89c 100644 --- a/composer.lock +++ b/composer.lock @@ -1067,12 +1067,12 @@ "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "9b19a5a12c990cafe832aa8ccc95be4f57f24c9d" + "reference": "712a6be217b6f046095e8548cfb50dfbb11e43fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/9b19a5a12c990cafe832aa8ccc95be4f57f24c9d", - "reference": "9b19a5a12c990cafe832aa8ccc95be4f57f24c9d", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/712a6be217b6f046095e8548cfb50dfbb11e43fe", + "reference": "712a6be217b6f046095e8548cfb50dfbb11e43fe", "shasum": "" }, "require": { @@ -1102,7 +1102,7 @@ "issues": "https://github.com/nextcloud-deps/ocp/issues", "source": "https://github.com/nextcloud-deps/ocp/tree/stable25" }, - "time": "2022-11-11T00:48:02+00:00" + "time": "2023-07-12T00:44:30+00:00" }, { "name": "nikic/php-parser", From 39b32823d47ee9c2e4c2322c8d9a04247fec825e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 27 Jul 2023 14:58:11 +0200 Subject: [PATCH 2/3] Fix phpunit-sqlite workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- .github/workflows/phpunit-sqlite.yml | 82 +++++++++++++++++++--------- composer.json | 3 +- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index 85b6ce92..b31b0a03 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -3,10 +3,22 @@ # https://github.com/nextcloud/.github # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -name: PHPUnit +name: PHPUnit sqlite on: pull_request: + paths: + - '.github/workflows/**' + - 'appinfo/**' + - 'lib/**' + - 'templates/**' + - 'tests/**' + - 'vendor/**' + - 'vendor-bin/**' + - '.php-cs-fixer.dist.php' + - 'composer.json' + - 'composer.lock' + push: branches: - main @@ -16,10 +28,9 @@ on: permissions: contents: read -env: - # Location of the phpunit.xml and phpunit.integration.xml files - PHPUNIT_CONFIG: ./tests/phpunit.xml - PHPUNIT_INTEGRATION_CONFIG: ./tests/phpunit.integration.xml +concurrency: + group: phpunit-sqlite-${{ github.head_ref || github.run_id }} + cancel-in-progress: true jobs: phpunit-sqlite: @@ -37,32 +48,35 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@v3 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: submodules: true repository: nextcloud/server ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@v3 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@v2 + uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 with: php-version: ${{ matrix.php-versions }} - tools: phpunit - extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite + # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Check composer file existence id: check_composer - uses: andstor/file-existence-action@v1 + uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2 with: files: apps/${{ env.APP_NAME }}/composer.json - - name: Set up PHPUnit + - name: Set up dependencies # Only run if phpunit config file exists if: steps.check_composer.outputs.files_exists == 'true' working-directory: apps/${{ env.APP_NAME }} @@ -73,37 +87,51 @@ jobs: DB_PORT: 4444 run: | mkdir data - ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password - ./occ app:enable ${{ env.APP_NAME }} + ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin + ./occ app:enable --force ${{ env.APP_NAME }} - - name: Check PHPUnit config file existence + - name: Check PHPUnit script is defined id: check_phpunit - uses: andstor/file-existence-action@v1 - with: - files: apps/${{ env.APP_NAME }}/${{ env.PHPUNIT_CONFIG }} + continue-on-error: true + working-directory: apps/${{ env.APP_NAME }} + run: | + composer run --list | grep "^ test:unit " | wc -l | grep 1 - name: PHPUnit # Only run if phpunit config file exists - if: steps.check_phpunit.outputs.files_exists == 'true' + if: steps.check_phpunit.outcome == 'success' working-directory: apps/${{ env.APP_NAME }} - run: ./vendor/phpunit/phpunit/phpunit -c ${{ env.PHPUNIT_CONFIG }} + run: composer run test:unit - - name: Check PHPUnit integration config file existence + - name: Check PHPUnit integration script is defined id: check_integration - uses: andstor/file-existence-action@v1 - with: - files: apps/${{ env.APP_NAME }}/${{ env.PHPUNIT_INTEGRATION_CONFIG }} + continue-on-error: true + working-directory: apps/${{ env.APP_NAME }} + run: | + composer run --list | grep "^ test:integration " | wc -l | grep 1 - name: Run Nextcloud # Only run if phpunit integration config file exists - if: steps.check_integration.outputs.files_exists == 'true' + if: steps.check_integration.outcome == 'success' run: php -S localhost:8080 & - name: PHPUnit integration # Only run if phpunit integration config file exists - if: steps.check_integration.outputs.files_exists == 'true' + if: steps.check_integration.outcome == 'success' working-directory: apps/${{ env.APP_NAME }} - run: ./vendor/phpunit/phpunit/phpunit -c ${{ env.PHPUNIT_INTEGRATION_CONFIG }} + run: composer run test:integration + + - name: Print logs + if: always() + run: | + cat data/nextcloud.log + + - name: Skipped + # Fail the action when neither unit nor integration tests ran + if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure' + run: | + echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts' + exit 1 summary: permissions: diff --git a/composer.json b/composer.json index 6f8c5505..d1708fdc 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,8 @@ "psalm:update-baseline": "psalm --threads=1 --update-baseline", "psalm:clear": "psalm --clear-cache && psalm --clear-global-cache", "psalm:fix": "psalm --alter --issues=InvalidReturnType,MissingReturnType,InvalidNullableReturnType,MissingParamType,InvalidFalsableReturnType", - "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l" + "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l", + "test:unit": "echo 'Only testing installation of the app'" }, "require-dev": { "phpunit/phpunit": "^9.5", From cf8eabef505b1e75f66225a86ec508a5e7cbdfc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 27 Jul 2023 15:32:05 +0200 Subject: [PATCH 3/3] Update lint-info-xml workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- .github/workflows/lint-info-xml.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint-info-xml.yml b/.github/workflows/lint-info-xml.yml index c6b78ddd..84d5a878 100644 --- a/.github/workflows/lint-info-xml.yml +++ b/.github/workflows/lint-info-xml.yml @@ -3,7 +3,7 @@ # https://github.com/nextcloud/.github # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -name: Lint +name: Lint info.xml on: pull_request: @@ -16,6 +16,10 @@ on: permissions: contents: read +concurrency: + group: lint-info-xml-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: xml-linters: runs-on: ubuntu-latest @@ -23,13 +27,13 @@ jobs: name: info.xml lint steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Download schema - run: wget https://raw.githubusercontent.com/nextcloud/server/master/resources/app-info-shipped.xsd + run: wget https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd - name: Lint info.xml - uses: ChristophWurst/xmllint-action@v1 + uses: ChristophWurst/xmllint-action@39155a91429af431d65fafc21fa52ba5c4f5cb71 # v1.1 with: xml-file: ./appinfo/info.xml - xml-schema-file: ./app-info-shipped.xsd + xml-schema-file: ./info.xsd