From 191d07d58899b96e0f0e7b2f28385ce4d2797c96 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Mon, 14 Apr 2025 08:34:55 -0400 Subject: [PATCH 1/6] ci: add Codecov's test analytics and bundle analysis features Signed-off-by: Spencer Murray --- .github/workflows/files-external-ftp.yml | 8 +- .github/workflows/files-external-s3.yml | 16 +- .github/workflows/files-external-sftp.yml | 8 +- .github/workflows/files-external-smb.yml | 8 +- .github/workflows/files-external-webdav.yml | 8 +- .github/workflows/files-external.yml | 8 +- .github/workflows/node-test.yml | 4 + .github/workflows/object-storage-azure.yml | 8 +- .github/workflows/object-storage-s3.yml | 8 +- .github/workflows/object-storage-swift.yml | 8 +- .github/workflows/phpunit-mariadb.yml | 8 +- .github/workflows/phpunit-memcached.yml | 8 +- .github/workflows/phpunit-mysql-sharding.yml | 8 +- .github/workflows/phpunit-mysql.yml | 8 +- .github/workflows/phpunit-nodb.yml | 8 +- .github/workflows/phpunit-oci.yml | 8 +- .github/workflows/phpunit-pgsql.yml | 8 +- .github/workflows/phpunit-sqlite.yml | 8 +- package-lock.json | 589 ++++++++++--------- package.json | 3 +- webpack.common.js | 6 + 21 files changed, 454 insertions(+), 292 deletions(-) diff --git a/.github/workflows/files-external-ftp.yml b/.github/workflows/files-external-ftp.yml index ef4f917b0b0..ca8013c08b9 100644 --- a/.github/workflows/files-external-ftp.yml +++ b/.github/workflows/files-external-ftp.yml @@ -96,7 +96,7 @@ jobs: - name: PHPUnit run: composer run test:files_external -- \ apps/files_external/tests/Storage/FtpTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -105,6 +105,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-ftp + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-ftp + - name: ftpd logs if: always() run: | diff --git a/.github/workflows/files-external-s3.yml b/.github/workflows/files-external-s3.yml index e700ff7a2ba..0480240a9e3 100644 --- a/.github/workflows/files-external-s3.yml +++ b/.github/workflows/files-external-s3.yml @@ -94,7 +94,7 @@ jobs: run: composer run test:files_external -- \ apps/files_external/tests/Storage/Amazons3Test.php \ apps/files_external/tests/Storage/VersionedAmazonS3Test.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -103,6 +103,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-s3 + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-s3 + - name: S3 logs if: always() run: | @@ -161,7 +167,7 @@ jobs: run: composer run test:files_external -- \ apps/files_external/tests/Storage/Amazons3Test.php \ apps/files_external/tests/Storage/VersionedAmazonS3Test.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -170,6 +176,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-s3 + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-s3 + - name: S3 logs if: always() run: | diff --git a/.github/workflows/files-external-sftp.yml b/.github/workflows/files-external-sftp.yml index 7203400a3e2..50905c9133d 100644 --- a/.github/workflows/files-external-sftp.yml +++ b/.github/workflows/files-external-sftp.yml @@ -85,7 +85,7 @@ jobs: run: composer run test:files_external -- \ apps/files_external/tests/Storage/SftpTest.php \ apps/files_external/tests/Storage/SFTP_KeyTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -94,6 +94,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-sftp + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-sftp + - name: sftpd logs if: always() run: | diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml index da1544fc149..58ccaf99b6b 100644 --- a/.github/workflows/files-external-smb.yml +++ b/.github/workflows/files-external-smb.yml @@ -90,7 +90,7 @@ jobs: - name: PHPUnit run: composer run test:files_external -- --verbose \ apps/files_external/tests/Storage/SmbTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -99,6 +99,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-smb + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-smb + files-external-smb-summary: runs-on: ubuntu-latest-low needs: [changes, files-external-smb] diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml index 8913234b787..a63ece73295 100644 --- a/.github/workflows/files-external-webdav.yml +++ b/.github/workflows/files-external-webdav.yml @@ -87,7 +87,7 @@ jobs: - name: PHPUnit run: composer run test:files_external -- --verbose \ apps/files_external/tests/Storage/WebdavTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -96,6 +96,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-webdav + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-webdav + files-external-webdav-summary: runs-on: ubuntu-latest-low needs: [changes, files-external-webdav-apache] diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml index e6ed2c263c8..0f8b22b1bb0 100644 --- a/.github/workflows/files-external.yml +++ b/.github/workflows/files-external.yml @@ -75,7 +75,7 @@ jobs: - name: PHPUnit run: composer run test:files_external -- \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -84,6 +84,12 @@ jobs: files: ./clover.xml flags: phpunit-files-external-generic + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-files-external-generic + files-external-summary: runs-on: ubuntu-latest-low needs: [changes, files-external-generic ] diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml index b5e55561ce3..10277d1189e 100644 --- a/.github/workflows/node-test.yml +++ b/.github/workflows/node-test.yml @@ -103,6 +103,10 @@ jobs: with: files: ./coverage/lcov.info + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + jsunit: runs-on: ubuntu-latest needs: [versions, changes] diff --git a/.github/workflows/object-storage-azure.yml b/.github/workflows/object-storage-azure.yml index 15113044d4f..73df0da0ab9 100644 --- a/.github/workflows/object-storage-azure.yml +++ b/.github/workflows/object-storage-azure.yml @@ -101,7 +101,7 @@ jobs: OBJECT_STORE: azure OBJECT_STORE_KEY: nextcloud OBJECT_STORE_SECRET: bmV4dGNsb3Vk - run: composer run test -- --group PRIMARY-azure ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + run: composer run test -- --group PRIMARY-azure ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -110,6 +110,12 @@ jobs: files: ./clover.xml flags: phpunit-azure + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-azure + - name: Azurite logs if: always() run: | diff --git a/.github/workflows/object-storage-s3.yml b/.github/workflows/object-storage-s3.yml index b0f98f0712a..b9d9f70c70f 100644 --- a/.github/workflows/object-storage-s3.yml +++ b/.github/workflows/object-storage-s3.yml @@ -107,7 +107,7 @@ jobs: OBJECT_STORE: s3 OBJECT_STORE_KEY: nextcloud OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ= - run: composer run test -- --group PRIMARY-s3 ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + run: composer run test -- --group PRIMARY-s3 ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -116,6 +116,12 @@ jobs: files: ./clover.xml flags: phpunit-s3 + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-s3 + - name: S3 logs if: always() run: | diff --git a/.github/workflows/object-storage-swift.yml b/.github/workflows/object-storage-swift.yml index 8ae73f1b859..cce6c2b607d 100644 --- a/.github/workflows/object-storage-swift.yml +++ b/.github/workflows/object-storage-swift.yml @@ -97,7 +97,7 @@ jobs: env: OBJECT_STORE: swift OBJECT_STORE_SECRET: veryfast - run: composer run test -- --group PRIMARY-swift ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + run: composer run test -- --group PRIMARY-swift ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -106,6 +106,12 @@ jobs: files: ./clover.xml flags: phpunit-swift + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-swift + - name: Swift logs if: always() run: | diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index f2fed10a0d8..bdee3cefb18 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -120,7 +120,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }} + run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -129,6 +129,12 @@ jobs: files: ./clover.db.xml flags: phpunit-mariadb + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-mariadb + summary: permissions: contents: none diff --git a/.github/workflows/phpunit-memcached.yml b/.github/workflows/phpunit-memcached.yml index f791c442b94..d5b2875528a 100644 --- a/.github/workflows/phpunit-memcached.yml +++ b/.github/workflows/phpunit-memcached.yml @@ -97,7 +97,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit memcached tests - run: composer run test -- --group Memcache,Memcached ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} + run: composer run test -- --group Memcache,Memcached ${{ matrix.coverage && '--coverage-clover ./clover.xml --log-junit junit.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -106,6 +106,12 @@ jobs: files: ./clover.xml flags: phpunit-memcached + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-memcached + - name: Print logs if: always() run: | diff --git a/.github/workflows/phpunit-mysql-sharding.yml b/.github/workflows/phpunit-mysql-sharding.yml index 41b7e782d14..7941e843158 100644 --- a/.github/workflows/phpunit-mysql-sharding.yml +++ b/.github/workflows/phpunit-mysql-sharding.yml @@ -155,7 +155,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }} + run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -164,6 +164,12 @@ jobs: files: ./clover.db.xml flags: phpunit-mysql + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-mysql + - name: Print logs if: always() run: | diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index 82775532030..14ce3fd39de 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -120,7 +120,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }} + run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -129,6 +129,12 @@ jobs: files: ./clover.db.xml flags: phpunit-mysql + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-mysql + - name: Print logs if: always() run: | diff --git a/.github/workflows/phpunit-nodb.yml b/.github/workflows/phpunit-nodb.yml index 6ef14bb75c4..39e8e445066 100644 --- a/.github/workflows/phpunit-nodb.yml +++ b/.github/workflows/phpunit-nodb.yml @@ -103,7 +103,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit nodb testsuite - run: composer run test -- --exclude-group DB,SLOWDB ${{ matrix.coverage && ' --coverage-clover ./clover.nodb.xml' || '' }} + run: composer run test -- --exclude-group DB,SLOWDB ${{ matrix.coverage && ' --coverage-clover ./clover.nodb.xml --log-junit junit.xml' || '' }} - name: Upload nodb code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -112,6 +112,12 @@ jobs: files: ./clover.nodb.xml flags: phpunit-nodb + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-nodb + - name: Print logs if: always() run: | diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml index 023339669a2..cf9e0a6677f 100644 --- a/.github/workflows/phpunit-oci.yml +++ b/.github/workflows/phpunit-oci.yml @@ -125,7 +125,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }} + run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -134,6 +134,12 @@ jobs: files: ./clover.db.xml flags: phpunit-oci + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-oci + - name: Run repair steps run: | ./occ maintenance:repair --include-expensive diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index afc47fa0e2b..d9e8d95f5e5 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -115,7 +115,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit database tests - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }} + run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -124,6 +124,12 @@ jobs: files: ./clover.db.xml flags: phpunit-postgres + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-postgres + - name: Run repair steps run: | ./occ maintenance:repair --include-expensive diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index 6576f9f1661..b70a1665eba 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -101,7 +101,7 @@ jobs: run: ./occ app:list && echo "======= System config =======" && ./occ config:list system - name: PHPUnit database tests - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }} + run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -110,6 +110,12 @@ jobs: files: ./clover.db.xml flags: phpunit-sqlite + - name: Upload test results + if: ${{ !cancelled() && matrix.coverage }} + uses: codecov/test-results-action@v1.1.0 + with: + flags: phpunit-sqlite + - name: Print logs if: always() run: | diff --git a/package-lock.json b/package-lock.json index 39847b625ae..79d66da45dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,6 +92,7 @@ "@babel/node": "^7.26.0", "@babel/plugin-transform-private-methods": "^7.25.9", "@babel/preset-typescript": "^7.27.0", + "@codecov/webpack-plugin": "^1.9.0", "@cypress/vue2": "^2.1.1", "@cypress/webpack-preprocessor": "^6.0.4", "@nextcloud/babel-config": "^1.2.0", @@ -184,6 +185,19 @@ "@actions/io": "^1.0.1" } }, + "node_modules/@actions/github": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" + } + }, "node_modules/@actions/http-client": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", @@ -2161,6 +2175,54 @@ "vue": "^2.6.0" } }, + "node_modules/@codecov/bundler-plugin-core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@codecov/bundler-plugin-core/-/bundler-plugin-core-1.9.0.tgz", + "integrity": "sha512-UB0I5haL0gnF4ei46wxNo7ptCHqFAh3PnmcLLeXRb2zV7HeobOF8WRjOW/PwrXAphPS/6bL7PDUmh3ruVObGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/core": "^1.10.1", + "@actions/github": "^6.0.0", + "chalk": "4.1.2", + "semver": "^7.5.4", + "unplugin": "^1.10.1", + "zod": "^3.22.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@codecov/bundler-plugin-core/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@codecov/webpack-plugin": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@codecov/webpack-plugin/-/webpack-plugin-1.9.0.tgz", + "integrity": "sha512-A8KcQ8gs/Xge3DFyD95iEh6DVJqjHwR6pwz2q38xvXYwh63d2hv8Wnlyfg9vhvNdbTfCsQlGH22yx1jMgd6syA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codecov/bundler-plugin-core": "^1.9.0", + "unplugin": "^1.10.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "webpack": "5.x" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -4296,6 +4358,178 @@ "node": ">=12.4.0" } }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", + "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", + "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, "node_modules/@one-ini/wasm": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", @@ -5382,46 +5616,6 @@ "node": ">=18" } }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", @@ -5550,46 +5744,6 @@ "deep-equal": "^2.0.5" } }, - "node_modules/@testing-library/vue/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/vue/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/vue/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -8506,6 +8660,13 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -9084,6 +9245,46 @@ "node": ">=12" } }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/char-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", @@ -10315,36 +10516,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cypress/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -10828,6 +10999,13 @@ "node": ">=18" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -12753,24 +12931,6 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -12863,17 +13023,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -12953,20 +13102,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -16327,31 +16462,6 @@ "concat-map": "0.0.1" } }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jake/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -16364,18 +16474,6 @@ "node": "*" } }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jasmine-core": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.5.2.tgz", @@ -17284,46 +17382,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", @@ -24316,35 +24374,6 @@ "webpack": "^5.0.0" } }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-loader/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -24370,20 +24399,6 @@ "node": ">= 8" } }, - "node_modules/ts-loader/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -24952,6 +24967,13 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -24972,6 +24994,20 @@ "node": ">= 0.8" } }, + "node_modules/unplugin": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/unrs-resolver": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.5.0.tgz", @@ -26292,6 +26328,13 @@ "node": ">=10.13.0" } }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", diff --git a/package.json b/package.json index dec02b788fa..28799ba7230 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "stylelint:fix": "stylelint --fix '{apps,core}/**/*.{scss,vue}'", "test": "vitest run", "test:watch": "vitest watch", - "test:coverage": "vitest run --coverage", + "test:coverage": "vitest run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml", "test:update-snapshots": "vitest run --update", "test:jsunit": "karma start tests/karma.config.js --single-run", "sass": "sass --style compressed --load-path core/css core/css/ $(for cssdir in $(find apps -mindepth 2 -maxdepth 2 -name \"css\"); do if ! $(git check-ignore -q $cssdir); then printf \"$cssdir \"; fi; done)", @@ -123,6 +123,7 @@ "@babel/node": "^7.26.0", "@babel/plugin-transform-private-methods": "^7.25.9", "@babel/preset-typescript": "^7.27.0", + "@codecov/webpack-plugin": "^1.9.0", "@cypress/vue2": "^2.1.1", "@cypress/webpack-preprocessor": "^6.0.4", "@nextcloud/babel-config": "^1.2.0", diff --git a/webpack.common.js b/webpack.common.js index 0d285a3dd61..d7b7fd9c7b8 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -15,6 +15,7 @@ const WorkboxPlugin = require('workbox-webpack-plugin') const WebpackSPDXPlugin = require('./build/WebpackSPDXPlugin.js') const modules = require('./webpack.modules.js') +const { codecovWebpackPlugin } = require('@codecov/webpack-plugin') const appVersion = readFileSync('./version.php').toString().match(/OC_Version.+\[([0-9]{2})/)?.[1] ?? 'unknown' const isDev = process.env.NODE_ENV === 'development' @@ -225,6 +226,11 @@ const config = { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment\/min$/, }), + codecovWebpackPlugin({ + enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined, + bundleName: 'nextcloud', + uploadToken: process.env.CODECOV_TOKEN + }) ], externals: { OC: 'OC', From 41764b9c09dbc34f2367a98f969940778f96f973 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Mon, 14 Apr 2025 09:52:26 -0400 Subject: [PATCH 2/6] ci: always collect and upload test results, not just on coverage runs Signed-off-by: Spencer Murray --- .github/workflows/files-external-ftp.yml | 4 ++-- .github/workflows/files-external-s3.yml | 8 ++++---- .github/workflows/files-external-sftp.yml | 4 ++-- .github/workflows/files-external-smb.yml | 4 ++-- .github/workflows/files-external-webdav.yml | 4 ++-- .github/workflows/files-external.yml | 4 ++-- .github/workflows/node-test.yml | 1 - .github/workflows/object-storage-azure.yml | 3 +-- .github/workflows/object-storage-s3.yml | 3 +-- .github/workflows/object-storage-swift.yml | 3 +-- .github/workflows/phpunit-mariadb.yml | 3 +-- .github/workflows/phpunit-memcached.yml | 3 +-- .github/workflows/phpunit-mysql-sharding.yml | 3 +-- .github/workflows/phpunit-mysql.yml | 3 +-- .github/workflows/phpunit-nodb.yml | 3 +-- .github/workflows/phpunit-oci.yml | 3 +-- .github/workflows/phpunit-pgsql.yml | 3 +-- .github/workflows/phpunit-sqlite.yml | 3 +-- 18 files changed, 25 insertions(+), 37 deletions(-) diff --git a/.github/workflows/files-external-ftp.yml b/.github/workflows/files-external-ftp.yml index ca8013c08b9..47349b7b496 100644 --- a/.github/workflows/files-external-ftp.yml +++ b/.github/workflows/files-external-ftp.yml @@ -96,7 +96,8 @@ jobs: - name: PHPUnit run: composer run test:files_external -- \ apps/files_external/tests/Storage/FtpTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -106,7 +107,6 @@ jobs: flags: phpunit-files-external-ftp - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-ftp diff --git a/.github/workflows/files-external-s3.yml b/.github/workflows/files-external-s3.yml index 0480240a9e3..8093124cd80 100644 --- a/.github/workflows/files-external-s3.yml +++ b/.github/workflows/files-external-s3.yml @@ -94,7 +94,8 @@ jobs: run: composer run test:files_external -- \ apps/files_external/tests/Storage/Amazons3Test.php \ apps/files_external/tests/Storage/VersionedAmazonS3Test.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -104,7 +105,6 @@ jobs: flags: phpunit-files-external-s3 - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-s3 @@ -167,7 +167,8 @@ jobs: run: composer run test:files_external -- \ apps/files_external/tests/Storage/Amazons3Test.php \ apps/files_external/tests/Storage/VersionedAmazonS3Test.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -177,7 +178,6 @@ jobs: flags: phpunit-files-external-s3 - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-s3 diff --git a/.github/workflows/files-external-sftp.yml b/.github/workflows/files-external-sftp.yml index 50905c9133d..86e6a02f899 100644 --- a/.github/workflows/files-external-sftp.yml +++ b/.github/workflows/files-external-sftp.yml @@ -85,7 +85,8 @@ jobs: run: composer run test:files_external -- \ apps/files_external/tests/Storage/SftpTest.php \ apps/files_external/tests/Storage/SFTP_KeyTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -95,7 +96,6 @@ jobs: flags: phpunit-files-external-sftp - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-sftp diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml index 58ccaf99b6b..04794b81984 100644 --- a/.github/workflows/files-external-smb.yml +++ b/.github/workflows/files-external-smb.yml @@ -90,7 +90,8 @@ jobs: - name: PHPUnit run: composer run test:files_external -- --verbose \ apps/files_external/tests/Storage/SmbTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -100,7 +101,6 @@ jobs: flags: phpunit-files-external-smb - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-smb diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml index a63ece73295..2c53506f8fc 100644 --- a/.github/workflows/files-external-webdav.yml +++ b/.github/workflows/files-external-webdav.yml @@ -87,7 +87,8 @@ jobs: - name: PHPUnit run: composer run test:files_external -- --verbose \ apps/files_external/tests/Storage/WebdavTest.php \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -97,7 +98,6 @@ jobs: flags: phpunit-files-external-webdav - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-webdav diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml index 0f8b22b1bb0..9c1de74c98a 100644 --- a/.github/workflows/files-external.yml +++ b/.github/workflows/files-external.yml @@ -75,7 +75,8 @@ jobs: - name: PHPUnit run: composer run test:files_external -- \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + --log-junit junit.xml \ + ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -85,7 +86,6 @@ jobs: flags: phpunit-files-external-generic - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-generic diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml index 10277d1189e..74014be375d 100644 --- a/.github/workflows/node-test.yml +++ b/.github/workflows/node-test.yml @@ -104,7 +104,6 @@ jobs: files: ./coverage/lcov.info - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 jsunit: diff --git a/.github/workflows/object-storage-azure.yml b/.github/workflows/object-storage-azure.yml index 73df0da0ab9..3bffe7dabe1 100644 --- a/.github/workflows/object-storage-azure.yml +++ b/.github/workflows/object-storage-azure.yml @@ -101,7 +101,7 @@ jobs: OBJECT_STORE: azure OBJECT_STORE_KEY: nextcloud OBJECT_STORE_SECRET: bmV4dGNsb3Vk - run: composer run test -- --group PRIMARY-azure ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + run: composer run test -- --group PRIMARY-azure --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -111,7 +111,6 @@ jobs: flags: phpunit-azure - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-azure diff --git a/.github/workflows/object-storage-s3.yml b/.github/workflows/object-storage-s3.yml index b9d9f70c70f..6f1123f323c 100644 --- a/.github/workflows/object-storage-s3.yml +++ b/.github/workflows/object-storage-s3.yml @@ -107,7 +107,7 @@ jobs: OBJECT_STORE: s3 OBJECT_STORE_KEY: nextcloud OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ= - run: composer run test -- --group PRIMARY-s3 ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + run: composer run test -- --group PRIMARY-s3 --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -117,7 +117,6 @@ jobs: flags: phpunit-s3 - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-s3 diff --git a/.github/workflows/object-storage-swift.yml b/.github/workflows/object-storage-swift.yml index cce6c2b607d..bf7019acce0 100644 --- a/.github/workflows/object-storage-swift.yml +++ b/.github/workflows/object-storage-swift.yml @@ -97,7 +97,7 @@ jobs: env: OBJECT_STORE: swift OBJECT_STORE_SECRET: veryfast - run: composer run test -- --group PRIMARY-swift ${{ matrix.coverage && ' --coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + run: composer run test -- --group PRIMARY-swift --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -107,7 +107,6 @@ jobs: flags: phpunit-swift - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-swift diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index bdee3cefb18..a949f40a522 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -120,7 +120,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} + run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -130,7 +130,6 @@ jobs: flags: phpunit-mariadb - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mariadb diff --git a/.github/workflows/phpunit-memcached.yml b/.github/workflows/phpunit-memcached.yml index d5b2875528a..f946ed26e1b 100644 --- a/.github/workflows/phpunit-memcached.yml +++ b/.github/workflows/phpunit-memcached.yml @@ -97,7 +97,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit memcached tests - run: composer run test -- --group Memcache,Memcached ${{ matrix.coverage && '--coverage-clover ./clover.xml --log-junit junit.xml' || '' }} + run: composer run test -- --group Memcache,Memcached --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -107,7 +107,6 @@ jobs: flags: phpunit-memcached - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-memcached diff --git a/.github/workflows/phpunit-mysql-sharding.yml b/.github/workflows/phpunit-mysql-sharding.yml index 7941e843158..dac057e58fe 100644 --- a/.github/workflows/phpunit-mysql-sharding.yml +++ b/.github/workflows/phpunit-mysql-sharding.yml @@ -155,7 +155,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} + run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -165,7 +165,6 @@ jobs: flags: phpunit-mysql - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mysql diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index 14ce3fd39de..7968495cdda 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -120,7 +120,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} + run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -130,7 +130,6 @@ jobs: flags: phpunit-mysql - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mysql diff --git a/.github/workflows/phpunit-nodb.yml b/.github/workflows/phpunit-nodb.yml index 39e8e445066..b3148907381 100644 --- a/.github/workflows/phpunit-nodb.yml +++ b/.github/workflows/phpunit-nodb.yml @@ -103,7 +103,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit nodb testsuite - run: composer run test -- --exclude-group DB,SLOWDB ${{ matrix.coverage && ' --coverage-clover ./clover.nodb.xml --log-junit junit.xml' || '' }} + run: composer run test -- --exclude-group DB,SLOWDB --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.nodb.xml' || '' }} - name: Upload nodb code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -113,7 +113,6 @@ jobs: flags: phpunit-nodb - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-nodb diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml index cf9e0a6677f..779323e74c6 100644 --- a/.github/workflows/phpunit-oci.yml +++ b/.github/workflows/phpunit-oci.yml @@ -125,7 +125,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} + run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -135,7 +135,6 @@ jobs: flags: phpunit-oci - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-oci diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index d9e8d95f5e5..476ef0bdb16 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -115,7 +115,7 @@ jobs: php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0 - name: PHPUnit database tests - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} + run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -125,7 +125,6 @@ jobs: flags: phpunit-postgres - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-postgres diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index b70a1665eba..444a3678768 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -101,7 +101,7 @@ jobs: run: ./occ app:list && echo "======= System config =======" && ./occ config:list system - name: PHPUnit database tests - run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml --log-junit junit.xml' || '' }} + run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} - name: Upload db code coverage if: ${{ !cancelled() && matrix.coverage }} @@ -111,7 +111,6 @@ jobs: flags: phpunit-sqlite - name: Upload test results - if: ${{ !cancelled() && matrix.coverage }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-sqlite From cb4e76060d0e26ef6753e339e042be06503da4ab Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Mon, 14 Apr 2025 10:02:11 -0400 Subject: [PATCH 3/6] ci: tweak Codecov webpack plugin config Signed-off-by: Spencer Murray --- webpack.common.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index d7b7fd9c7b8..f4d85d751d4 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -226,11 +226,10 @@ const config = { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment\/min$/, }), - codecovWebpackPlugin({ - enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined, - bundleName: 'nextcloud', - uploadToken: process.env.CODECOV_TOKEN - }) + codecovWebpackPlugin({ + enableBundleAnalysis: !isDev, + bundleName: 'nextcloud', + }), ], externals: { OC: 'OC', From c795fb193750aa6df8f43b604cc339f341fd4778 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Mon, 14 Apr 2025 10:08:05 -0400 Subject: [PATCH 4/6] ci: fix whitespace Signed-off-by: Spencer Murray --- .github/workflows/files-external-smb.yml | 2 +- .github/workflows/files-external-webdav.yml | 2 +- .github/workflows/files-external.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml index 04794b81984..ed036f002d3 100644 --- a/.github/workflows/files-external-smb.yml +++ b/.github/workflows/files-external-smb.yml @@ -91,7 +91,7 @@ jobs: run: composer run test:files_external -- --verbose \ apps/files_external/tests/Storage/SmbTest.php \ --log-junit junit.xml \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml index 2c53506f8fc..24ecd1e8ca4 100644 --- a/.github/workflows/files-external-webdav.yml +++ b/.github/workflows/files-external-webdav.yml @@ -88,7 +88,7 @@ jobs: run: composer run test:files_external -- --verbose \ apps/files_external/tests/Storage/WebdavTest.php \ --log-junit junit.xml \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml index 9c1de74c98a..930ebac8830 100644 --- a/.github/workflows/files-external.yml +++ b/.github/workflows/files-external.yml @@ -76,7 +76,7 @@ jobs: - name: PHPUnit run: composer run test:files_external -- \ --log-junit junit.xml \ - ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }} + ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} - name: Upload code coverage if: ${{ !cancelled() && matrix.coverage }} From 9c3bdf2647136203b93c8cda2ec901a330cbc9b4 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Mon, 14 Apr 2025 11:41:43 -0400 Subject: [PATCH 5/6] ci: always upload test results, even if tests fail Signed-off-by: Spencer Murray --- .github/workflows/files-external-ftp.yml | 1 + .github/workflows/files-external-s3.yml | 2 ++ .github/workflows/files-external-sftp.yml | 1 + .github/workflows/files-external-smb.yml | 1 + .github/workflows/files-external-webdav.yml | 1 + .github/workflows/files-external.yml | 1 + .github/workflows/object-storage-azure.yml | 1 + .github/workflows/object-storage-s3.yml | 1 + .github/workflows/object-storage-swift.yml | 1 + .github/workflows/phpunit-mariadb.yml | 1 + .github/workflows/phpunit-memcached.yml | 1 + .github/workflows/phpunit-mysql-sharding.yml | 1 + .github/workflows/phpunit-mysql.yml | 1 + .github/workflows/phpunit-nodb.yml | 1 + .github/workflows/phpunit-oci.yml | 1 + .github/workflows/phpunit-pgsql.yml | 1 + .github/workflows/phpunit-sqlite.yml | 1 + 17 files changed, 18 insertions(+) diff --git a/.github/workflows/files-external-ftp.yml b/.github/workflows/files-external-ftp.yml index 47349b7b496..6867a12ab5e 100644 --- a/.github/workflows/files-external-ftp.yml +++ b/.github/workflows/files-external-ftp.yml @@ -107,6 +107,7 @@ jobs: flags: phpunit-files-external-ftp - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-ftp diff --git a/.github/workflows/files-external-s3.yml b/.github/workflows/files-external-s3.yml index 8093124cd80..19e5100e19c 100644 --- a/.github/workflows/files-external-s3.yml +++ b/.github/workflows/files-external-s3.yml @@ -105,6 +105,7 @@ jobs: flags: phpunit-files-external-s3 - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-s3 @@ -178,6 +179,7 @@ jobs: flags: phpunit-files-external-s3 - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-s3 diff --git a/.github/workflows/files-external-sftp.yml b/.github/workflows/files-external-sftp.yml index 86e6a02f899..de276f78993 100644 --- a/.github/workflows/files-external-sftp.yml +++ b/.github/workflows/files-external-sftp.yml @@ -96,6 +96,7 @@ jobs: flags: phpunit-files-external-sftp - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-sftp diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml index ed036f002d3..16909876956 100644 --- a/.github/workflows/files-external-smb.yml +++ b/.github/workflows/files-external-smb.yml @@ -101,6 +101,7 @@ jobs: flags: phpunit-files-external-smb - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-smb diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml index 24ecd1e8ca4..1909054a705 100644 --- a/.github/workflows/files-external-webdav.yml +++ b/.github/workflows/files-external-webdav.yml @@ -98,6 +98,7 @@ jobs: flags: phpunit-files-external-webdav - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-webdav diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml index 930ebac8830..5afef6c8e93 100644 --- a/.github/workflows/files-external.yml +++ b/.github/workflows/files-external.yml @@ -86,6 +86,7 @@ jobs: flags: phpunit-files-external-generic - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-generic diff --git a/.github/workflows/object-storage-azure.yml b/.github/workflows/object-storage-azure.yml index 3bffe7dabe1..214b12c0bf4 100644 --- a/.github/workflows/object-storage-azure.yml +++ b/.github/workflows/object-storage-azure.yml @@ -111,6 +111,7 @@ jobs: flags: phpunit-azure - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-azure diff --git a/.github/workflows/object-storage-s3.yml b/.github/workflows/object-storage-s3.yml index 6f1123f323c..d5940cac518 100644 --- a/.github/workflows/object-storage-s3.yml +++ b/.github/workflows/object-storage-s3.yml @@ -117,6 +117,7 @@ jobs: flags: phpunit-s3 - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-s3 diff --git a/.github/workflows/object-storage-swift.yml b/.github/workflows/object-storage-swift.yml index bf7019acce0..72fda610f26 100644 --- a/.github/workflows/object-storage-swift.yml +++ b/.github/workflows/object-storage-swift.yml @@ -107,6 +107,7 @@ jobs: flags: phpunit-swift - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-swift diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index a949f40a522..a1e09a5ad5e 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -130,6 +130,7 @@ jobs: flags: phpunit-mariadb - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mariadb diff --git a/.github/workflows/phpunit-memcached.yml b/.github/workflows/phpunit-memcached.yml index f946ed26e1b..4fdf0b4c382 100644 --- a/.github/workflows/phpunit-memcached.yml +++ b/.github/workflows/phpunit-memcached.yml @@ -107,6 +107,7 @@ jobs: flags: phpunit-memcached - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-memcached diff --git a/.github/workflows/phpunit-mysql-sharding.yml b/.github/workflows/phpunit-mysql-sharding.yml index dac057e58fe..b6be7781cd9 100644 --- a/.github/workflows/phpunit-mysql-sharding.yml +++ b/.github/workflows/phpunit-mysql-sharding.yml @@ -165,6 +165,7 @@ jobs: flags: phpunit-mysql - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mysql diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index 7968495cdda..01f715f2366 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -130,6 +130,7 @@ jobs: flags: phpunit-mysql - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mysql diff --git a/.github/workflows/phpunit-nodb.yml b/.github/workflows/phpunit-nodb.yml index b3148907381..4182dcf0abe 100644 --- a/.github/workflows/phpunit-nodb.yml +++ b/.github/workflows/phpunit-nodb.yml @@ -113,6 +113,7 @@ jobs: flags: phpunit-nodb - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-nodb diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml index 779323e74c6..e76091218d2 100644 --- a/.github/workflows/phpunit-oci.yml +++ b/.github/workflows/phpunit-oci.yml @@ -135,6 +135,7 @@ jobs: flags: phpunit-oci - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-oci diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index 476ef0bdb16..fc03427a6c4 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -125,6 +125,7 @@ jobs: flags: phpunit-postgres - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-postgres diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index 444a3678768..d999a0751a9 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -111,6 +111,7 @@ jobs: flags: phpunit-sqlite - name: Upload test results + if: always() uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-sqlite From 0395eaacbb99d95014e2e8fe09d6e3005ffb9c17 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Thu, 24 Apr 2025 12:05:25 -0400 Subject: [PATCH 6/6] ci: change if always() to if not cancelled on test results uploads Signed-off-by: Spencer Murray --- .github/workflows/files-external-ftp.yml | 2 +- .github/workflows/files-external-s3.yml | 4 ++-- .github/workflows/files-external-sftp.yml | 2 +- .github/workflows/files-external-smb.yml | 2 +- .github/workflows/files-external-webdav.yml | 2 +- .github/workflows/files-external.yml | 2 +- .github/workflows/node-test.yml | 1 + .github/workflows/object-storage-azure.yml | 2 +- .github/workflows/object-storage-s3.yml | 2 +- .github/workflows/object-storage-swift.yml | 2 +- .github/workflows/phpunit-mariadb.yml | 2 +- .github/workflows/phpunit-memcached.yml | 2 +- .github/workflows/phpunit-mysql-sharding.yml | 2 +- .github/workflows/phpunit-mysql.yml | 2 +- .github/workflows/phpunit-nodb.yml | 2 +- .github/workflows/phpunit-oci.yml | 2 +- .github/workflows/phpunit-pgsql.yml | 2 +- .github/workflows/phpunit-sqlite.yml | 2 +- 18 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/files-external-ftp.yml b/.github/workflows/files-external-ftp.yml index 6867a12ab5e..357e50fdc5c 100644 --- a/.github/workflows/files-external-ftp.yml +++ b/.github/workflows/files-external-ftp.yml @@ -107,7 +107,7 @@ jobs: flags: phpunit-files-external-ftp - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-ftp diff --git a/.github/workflows/files-external-s3.yml b/.github/workflows/files-external-s3.yml index 19e5100e19c..937dc237376 100644 --- a/.github/workflows/files-external-s3.yml +++ b/.github/workflows/files-external-s3.yml @@ -105,7 +105,7 @@ jobs: flags: phpunit-files-external-s3 - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-s3 @@ -179,7 +179,7 @@ jobs: flags: phpunit-files-external-s3 - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-s3 diff --git a/.github/workflows/files-external-sftp.yml b/.github/workflows/files-external-sftp.yml index de276f78993..3d4a2443166 100644 --- a/.github/workflows/files-external-sftp.yml +++ b/.github/workflows/files-external-sftp.yml @@ -96,7 +96,7 @@ jobs: flags: phpunit-files-external-sftp - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-sftp diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml index 16909876956..4c0b09ca412 100644 --- a/.github/workflows/files-external-smb.yml +++ b/.github/workflows/files-external-smb.yml @@ -101,7 +101,7 @@ jobs: flags: phpunit-files-external-smb - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-smb diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml index 1909054a705..4df99464fe5 100644 --- a/.github/workflows/files-external-webdav.yml +++ b/.github/workflows/files-external-webdav.yml @@ -98,7 +98,7 @@ jobs: flags: phpunit-files-external-webdav - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-webdav diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml index 5afef6c8e93..96f7e3cd77b 100644 --- a/.github/workflows/files-external.yml +++ b/.github/workflows/files-external.yml @@ -86,7 +86,7 @@ jobs: flags: phpunit-files-external-generic - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-files-external-generic diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml index 74014be375d..e22e7d429c4 100644 --- a/.github/workflows/node-test.yml +++ b/.github/workflows/node-test.yml @@ -104,6 +104,7 @@ jobs: files: ./coverage/lcov.info - name: Upload test results + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 jsunit: diff --git a/.github/workflows/object-storage-azure.yml b/.github/workflows/object-storage-azure.yml index 214b12c0bf4..0b8c4533b17 100644 --- a/.github/workflows/object-storage-azure.yml +++ b/.github/workflows/object-storage-azure.yml @@ -111,7 +111,7 @@ jobs: flags: phpunit-azure - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-azure diff --git a/.github/workflows/object-storage-s3.yml b/.github/workflows/object-storage-s3.yml index d5940cac518..c3564842083 100644 --- a/.github/workflows/object-storage-s3.yml +++ b/.github/workflows/object-storage-s3.yml @@ -117,7 +117,7 @@ jobs: flags: phpunit-s3 - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-s3 diff --git a/.github/workflows/object-storage-swift.yml b/.github/workflows/object-storage-swift.yml index 72fda610f26..f90a12880a1 100644 --- a/.github/workflows/object-storage-swift.yml +++ b/.github/workflows/object-storage-swift.yml @@ -107,7 +107,7 @@ jobs: flags: phpunit-swift - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-swift diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index a1e09a5ad5e..7aff0e5e3c8 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -130,7 +130,7 @@ jobs: flags: phpunit-mariadb - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mariadb diff --git a/.github/workflows/phpunit-memcached.yml b/.github/workflows/phpunit-memcached.yml index 4fdf0b4c382..596b82a2c92 100644 --- a/.github/workflows/phpunit-memcached.yml +++ b/.github/workflows/phpunit-memcached.yml @@ -107,7 +107,7 @@ jobs: flags: phpunit-memcached - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-memcached diff --git a/.github/workflows/phpunit-mysql-sharding.yml b/.github/workflows/phpunit-mysql-sharding.yml index b6be7781cd9..1db62b491b4 100644 --- a/.github/workflows/phpunit-mysql-sharding.yml +++ b/.github/workflows/phpunit-mysql-sharding.yml @@ -165,7 +165,7 @@ jobs: flags: phpunit-mysql - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mysql diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index 01f715f2366..fba8a33430a 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -130,7 +130,7 @@ jobs: flags: phpunit-mysql - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-mysql diff --git a/.github/workflows/phpunit-nodb.yml b/.github/workflows/phpunit-nodb.yml index 4182dcf0abe..d99f79f44c8 100644 --- a/.github/workflows/phpunit-nodb.yml +++ b/.github/workflows/phpunit-nodb.yml @@ -113,7 +113,7 @@ jobs: flags: phpunit-nodb - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-nodb diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml index e76091218d2..27dd185b3a0 100644 --- a/.github/workflows/phpunit-oci.yml +++ b/.github/workflows/phpunit-oci.yml @@ -135,7 +135,7 @@ jobs: flags: phpunit-oci - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-oci diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index fc03427a6c4..eeaaf8cf426 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -125,7 +125,7 @@ jobs: flags: phpunit-postgres - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-postgres diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index d999a0751a9..ba3bb013a8c 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -111,7 +111,7 @@ jobs: flags: phpunit-sqlite - name: Upload test results - if: always() + if: ${{ !cancelled() }} uses: codecov/test-results-action@v1.1.0 with: flags: phpunit-sqlite