From 443b5633350bdbcf3d5a6633cab0828f540ad09b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9stor=20Soriano?= Date: Mon, 16 Jan 2023 08:58:09 +0100 Subject: [PATCH] Upgrade PHPUnit to v8 and stop using patched PHPUnit 7 for PHP 8 (#36273) * Upgrade PHPUnit to v8, and remove usage of PHPUnit7 fork in CI Once the minimum WordPress version supported by WooCommerce is 5.9 and the minimum PHP version supported is 7.2, we can switch to PHPUnit 7 and the patched PHPUnit 7 with support for PHP 8 is no longer needed. * Resolve PHPUnit 8 deprecations in tests * Add changelog file * Fix code formatting --- .github/workflows/pr-unit-tests.yml | 99 ++- .../bin/composer/mozart/composer.lock | 2 +- .../bin/composer/phpcs/composer.lock | 2 +- .../bin/composer/phpunit/composer.lock | 2 +- .../woocommerce/bin/composer/wp/composer.lock | 2 +- .../changelog/upgrade-to-phpunit-8 | 4 + plugins/woocommerce/composer.json | 9 +- plugins/woocommerce/composer.lock | 567 +++++++----------- .../woocommerce/tests/legacy/bootstrap.php | 2 +- .../unit-tests/woocommerce-admin/api-init.php | 3 + .../woocommerce-admin/batch-queue.php | 3 + .../woocommerce-admin/category-lookup.php | 2 +- .../transformer-service.php | 9 +- .../php/includes/class-wc-emails-tests.php | 4 +- .../includes/wc-attribute-functions-test.php | 6 +- .../Admin/ProductReviews/ReviewsTest.php | 2 +- .../BatchProcessingControllerTests.php | 2 - .../Orders/DataSynchronizerTests.php | 2 + .../Orders/MobileMessagingHandlerTest.php | 8 +- 19 files changed, 282 insertions(+), 448 deletions(-) create mode 100644 plugins/woocommerce/changelog/upgrade-to-phpunit-8 diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 63a87c54e1c..18da726ee35 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -13,63 +13,50 @@ concurrency: permissions: {} jobs: - test: - name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} - timeout-minutes: 30 - runs-on: ubuntu-20.04 - permissions: - contents: read - continue-on-error: ${{ matrix.wp == 'nightly' }} - strategy: - fail-fast: false - matrix: - php: ['7.4', '8.0'] - wp: ['latest'] - include: - - wp: nightly - php: '7.4' - - wp: '5.9' - php: 7.4 - - wp: '5.8' - php: 7.4 - services: - database: - image: mysql:5.6 - env: - MYSQL_ROOT_PASSWORD: root - ports: - - 3306:3306 - options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 - steps: - - uses: actions/checkout@v3 + test: + name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} + timeout-minutes: 30 + runs-on: ubuntu-20.04 + permissions: + contents: read + continue-on-error: ${{ matrix.wp == 'nightly' }} + strategy: + fail-fast: false + matrix: + php: [ '7.4', '8.0' ] + wp: [ "latest" ] + include: + - wp: nightly + php: '7.4' + - wp: '6.0' + php: 7.4 + - wp: '5.9' + php: 7.4 + services: + database: + image: mysql:5.6 + env: + MYSQL_ROOT_PASSWORD: root + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 + steps: + - uses: actions/checkout@v3 - - name: Setup WooCommerce Monorepo - uses: ./.github/actions/setup-woocommerce-monorepo - with: - php-version: ${{ matrix.php }} + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo + with: + php-version: ${{ matrix.php }} - - name: Tool versions - run: | - php --version - composer --version + - name: Tool versions + run: | + php --version + composer --version - - name: Add PHP8 Compatibility. - run: | - if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then - cd plugins/woocommerce - curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip - unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip - composer bin phpunit config --unset platform - composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' - composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs - rm -rf ./vendor/phpunit/ - composer dump-autoload - fi + - name: Init DB and WP + working-directory: plugins/woocommerce + run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }} - - name: Init DB and WP - working-directory: plugins/woocommerce - run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }} - - - name: Run tests - working-directory: plugins/woocommerce - run: pnpm run test --filter=woocommerce --color + - name: Run tests + working-directory: plugins/woocommerce + run: pnpm run test --filter=woocommerce --color diff --git a/plugins/woocommerce/bin/composer/mozart/composer.lock b/plugins/woocommerce/bin/composer/mozart/composer.lock index 1554fb40d8b..5291be463e6 100644 --- a/plugins/woocommerce/bin/composer/mozart/composer.lock +++ b/plugins/woocommerce/bin/composer/mozart/composer.lock @@ -1169,5 +1169,5 @@ "platform-overrides": { "php": "7.3" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.0.0" } diff --git a/plugins/woocommerce/bin/composer/phpcs/composer.lock b/plugins/woocommerce/bin/composer/phpcs/composer.lock index 0e1a6def19c..29bcf29ff1d 100644 --- a/plugins/woocommerce/bin/composer/phpcs/composer.lock +++ b/plugins/woocommerce/bin/composer/phpcs/composer.lock @@ -475,5 +475,5 @@ "platform-overrides": { "php": "7.2" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.0.0" } diff --git a/plugins/woocommerce/bin/composer/phpunit/composer.lock b/plugins/woocommerce/bin/composer/phpunit/composer.lock index 1983c0a3a0b..c80d9739bc5 100644 --- a/plugins/woocommerce/bin/composer/phpunit/composer.lock +++ b/plugins/woocommerce/bin/composer/phpunit/composer.lock @@ -1697,5 +1697,5 @@ "platform-overrides": { "php": "7.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.0.0" } diff --git a/plugins/woocommerce/bin/composer/wp/composer.lock b/plugins/woocommerce/bin/composer/wp/composer.lock index d97875d11d1..84e38397103 100644 --- a/plugins/woocommerce/bin/composer/wp/composer.lock +++ b/plugins/woocommerce/bin/composer/wp/composer.lock @@ -687,5 +687,5 @@ "platform-overrides": { "php": "7.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.0.0" } diff --git a/plugins/woocommerce/changelog/upgrade-to-phpunit-8 b/plugins/woocommerce/changelog/upgrade-to-phpunit-8 new file mode 100644 index 00000000000..f08bce4ff53 --- /dev/null +++ b/plugins/woocommerce/changelog/upgrade-to-phpunit-8 @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Upgrade PHPUnit to v8 diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 973a2216fd2..60cb6ae41f7 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -24,11 +24,12 @@ "woocommerce/woocommerce-blocks": "9.1.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4", - "yoast/phpunit-polyfills": "^1.0", - "phpunit/phpunit": "7.5.20", "automattic/jetpack-changelogger": "^3.3.0", - "sebastian/comparator": "3.0.3" + "bamarni/composer-bin-plugin": "^1.4", + "dms/phpunit-arraysubset-asserts": "^0.4.0", + "phpunit/phpunit": "^8.0", + "sebastian/comparator": "3.0.3", + "yoast/phpunit-polyfills": "^1.0" }, "config": { "optimize-autoloader": true, diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index d018bb3388d..66036e5e61d 100644 --- a/plugins/woocommerce/composer.lock +++ b/plugins/woocommerce/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5d6aa45a4ccd532e09383828f396c06d", + "content-hash": "c00f9ad96d703d7e841895190ec42436", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -797,31 +797,76 @@ "time": "2022-02-22T21:01:25+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.4.1", + "name": "dms/phpunit-arraysubset-asserts", + "version": "v0.4.0", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "url": "https://github.com/rdohms/phpunit-arraysubset-asserts.git", + "reference": "428293c2a00eceefbad71a2dbdfb913febb35de2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/rdohms/phpunit-arraysubset-asserts/zipball/428293c2a00eceefbad71a2dbdfb913febb35de2", + "reference": "428293c2a00eceefbad71a2dbdfb913febb35de2", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "require-dev": { + "dms/coding-standard": "^9", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "files": [ + "assertarraysubset-autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rafael Dohms", + "email": "rdohms@gmail.com" + } + ], + "description": "This package provides ArraySubset and related asserts once deprecated in PHPUnit 8", + "support": { + "issues": "https://github.com/rdohms/phpunit-arraysubset-asserts/issues", + "source": "https://github.com/rdohms/phpunit-arraysubset-asserts/tree/v0.4.0" + }, + "time": "2022-02-13T15:00:28+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -848,7 +893,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -864,7 +909,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "myclabs/deep-copy", @@ -927,28 +972,29 @@ }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -980,26 +1026,26 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2018-07-08T19:23:20+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -1031,273 +1077,46 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/master" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2018-07-08T19:19:57+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.16.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" - }, - "time": "2022-11-29T15:06:56+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "7.0.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "819f92bba8b001d4363065928088de22f25a3a48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", + "reference": "819f92bba8b001d4363065928088de22f25a3a48", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", + "php": ">=7.2", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", + "phpunit/php-token-stream": "^3.1.3 || ^4.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", + "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -1325,9 +1144,15 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" }, - "time": "2018-10-31T16:06:48+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-07-26T12:20:09+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1555,53 +1380,48 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.20", + "version": "8.5.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "reference": "e8c563c47a9a303662955518ca532b022b337f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8c563c47a9a303662955518ca532b022b337f4d", + "reference": "e8c563c47a9a303662955518ca532b022b337f4d", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.1", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.0", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.2", + "phpunit/php-code-coverage": "^7.0.12", + "phpunit/php-file-iterator": "^2.0.4", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.3", + "sebastian/exporter": "^3.1.2", + "sebastian/global-state": "^3.0.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", "sebastian/version": "^2.0.1" }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" - }, - "require-dev": { - "ext-pdo": "*" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -1609,7 +1429,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -1637,9 +1457,19 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.29" }, - "time": "2020-01-08T08:45:45+00:00" + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-08-22T13:59:39+00:00" }, { "name": "psr/log", @@ -2028,23 +1858,26 @@ }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -2052,7 +1885,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2077,9 +1910,15 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" }, - "time": "2017-04-27T15:39:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-10T06:55:38+00:00" }, { "name": "sebastian/object-enumerator", @@ -2308,6 +2147,62 @@ ], "time": "2020-11-30T07:30:19+00:00" }, + { + "name": "sebastian/type", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:25:11+00:00" + }, { "name": "sebastian/version", "version": "2.0.1", @@ -2702,64 +2597,6 @@ ], "time": "2021-07-28T10:34:58+00:00" }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - }, { "name": "wikimedia/at-ease", "version": "v2.0.0", @@ -2889,5 +2726,5 @@ "platform-overrides": { "php": "7.2" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.0.0" } diff --git a/plugins/woocommerce/tests/legacy/bootstrap.php b/plugins/woocommerce/tests/legacy/bootstrap.php index 171219764d4..01aef6f2c19 100644 --- a/plugins/woocommerce/tests/legacy/bootstrap.php +++ b/plugins/woocommerce/tests/legacy/bootstrap.php @@ -13,7 +13,7 @@ use Automattic\WooCommerce\Testing\Tools\CodeHacking\Hacks\StaticMockerHack; use Automattic\WooCommerce\Testing\Tools\CodeHacking\Hacks\FunctionsMockerHack; use Automattic\WooCommerce\Testing\Tools\CodeHacking\Hacks\BypassFinalsHack; use Automattic\WooCommerce\Testing\Tools\DependencyManagement\MockableLegacyProxy; -\PHPUnit\Framework\Error\Deprecated::$enabled = false; + /** * Class WC_Unit_Tests_Bootstrap */ diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php index 68a569bdbb9..9428bcb0c68 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php @@ -9,11 +9,14 @@ use Automattic\WooCommerce\Internal\Admin\Schedulers\CustomersScheduler; use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler; use \Automattic\WooCommerce\Admin\API\Reports\Orders\Stats\DataStore as OrdersStatsDataStore; +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; /** * Class WC_Admin_Tests_API_Init */ class WC_Admin_Tests_API_Init extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; + /** * Set up. */ diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/batch-queue.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/batch-queue.php index 42406606520..eee1f28473e 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/batch-queue.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/batch-queue.php @@ -8,6 +8,7 @@ use Automattic\WooCommerce\Internal\Admin\Schedulers\CustomersScheduler; use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler; +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; /** * Reports Generation Batch Queue Test Class @@ -16,6 +17,8 @@ use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler; * @since 3.5.0 */ class WC_Admin_Tests_Reports_Regenerate_Batching extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; + /** * Queue batch size. * diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/category-lookup.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/category-lookup.php index ce001e434cf..90da3721054 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/category-lookup.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/category-lookup.php @@ -25,7 +25,7 @@ class WC_Admin_Tests_Category_Lookup extends WP_UnitTestCase { * Setup */ - public function setUp() { + public function setUp(): void { delete_transient('wc_installing'); parent::setUp(); $parent = wp_insert_term( 'test_parent', 'product_cat' ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/remote-inbox-notifications/transformer-service.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/remote-inbox-notifications/transformer-service.php index c6264f30760..ac564a954af 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/remote-inbox-notifications/transformer-service.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/remote-inbox-notifications/transformer-service.php @@ -29,18 +29,19 @@ class WC_Admin_Tests_RemoteInboxNotifications_TransformerService extends WC_Unit } /** - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Missing required config value: use + * @testdox An exception is thrown when the transformer config is missing 'use' */ public function test_it_throw_exception_when_transformer_config_is_missing_use() { + $this->expectException( InvalidArgumentException::class ); + $this->expectExceptionMessage( 'Missing required config value: use' ); TransformerService::apply( array( 'value' ), array( new stdClass() ), null ); } /** - * @expectedException InvalidArgumentException - * @expectedExceptionMessage Unable to find a transformer by name: i_do_not_exist + * @testdox An exception is thrown when the transformer is not found */ public function test_it_throws_exception_when_transformer_is_not_found() { + $this->expectExceptionMessage( 'Unable to find a transformer by name: i_do_not_exist' ); $transformer = $this->transformer_config( 'i_do_not_exist' ); TransformerService::apply( array( 'value' ), array( $transformer ), null ); } diff --git a/plugins/woocommerce/tests/php/includes/class-wc-emails-tests.php b/plugins/woocommerce/tests/php/includes/class-wc-emails-tests.php index 51ede419c73..40dcf501a66 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-emails-tests.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-emails-tests.php @@ -56,7 +56,7 @@ class WC_Emails_Tests extends \WC_Unit_Test_Case { $email_object->order_meta( $order, true, true ); $content = ob_get_contents(); ob_end_clean(); - $this->assertContains( 'dummy_key', $content ); - $this->assertContains( 'dummy_meta_value', $content ); + $this->assertStringContainsString( 'dummy_key', $content ); + $this->assertStringContainsString( 'dummy_meta_value', $content ); } } diff --git a/plugins/woocommerce/tests/php/includes/wc-attribute-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-attribute-functions-test.php index f8d13bfa516..351b43c0f54 100644 --- a/plugins/woocommerce/tests/php/includes/wc-attribute-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-attribute-functions-test.php @@ -121,15 +121,13 @@ class WC_Attribute_Functions_Test extends \WC_Unit_Test_Case { $ids = array(); $ids[] = wc_create_attribute( array( 'name' => 'Brand' ) ); - $this->assertInternalType( - 'int', + $this->assertIsInt( end( $ids ), 'wc_create_attribute should return a numeric id on success.' ); $ids[] = wc_create_attribute( array( 'name' => str_repeat( 'n', 28 ) ) ); - $this->assertInternalType( - 'int', + $this->assertIsInt( end( $ids ), 'Attribute creation should succeed when its slug is 28 characters long.' ); diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php index 87204d42849..4ac9d7d2696 100644 --- a/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php +++ b/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsTest.php @@ -362,7 +362,7 @@ class ReviewsTest extends WC_Unit_Test_Case { $result = $method->invoke( $reviews ); foreach ( $expected_result as $i => $expected_message ) { - $this->assertContains( $expected_message, $result[ $i ] ); + $this->assertStringContainsString( $expected_message, $result[ $i ] ); } } diff --git a/plugins/woocommerce/tests/php/src/Internal/BatchProcessing/BatchProcessingControllerTests.php b/plugins/woocommerce/tests/php/src/Internal/BatchProcessing/BatchProcessingControllerTests.php index 3bb694d9c91..9649e083266 100644 --- a/plugins/woocommerce/tests/php/src/Internal/BatchProcessing/BatchProcessingControllerTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/BatchProcessing/BatchProcessingControllerTests.php @@ -144,7 +144,6 @@ class BatchProcessingControllerTests extends WC_Unit_Test_Case { */ public function test_process_single_update_unfinished() { $test_process_mock = $this->getMockBuilder( get_class( $this->test_process ) )->getMock(); - $test_process_mock->expects( $this->once() )->method( 'process_batch' )->willReturn( true ); $test_process_mock->method( 'get_total_pending_count' )->willReturn( 10 ); $test_process_mock->expects( $this->once() )->method( 'get_next_batch_to_process' )->willReturn( array( 'dummy_id' ) ); @@ -166,7 +165,6 @@ class BatchProcessingControllerTests extends WC_Unit_Test_Case { */ public function test_process_single_update_finished() { $test_process_mock = $this->getMockBuilder( get_class( $this->test_process ) )->getMock(); - $test_process_mock->expects( $this->once() )->method( 'process_batch' )->willReturn( true ); $test_process_mock->method( 'get_total_pending_count' )->willReturn( 0 ); $test_process_mock->expects( $this->once() )->method( 'get_next_batch_to_process' )->willReturn( array( 'dummy_id' ) ); diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php index c02026c4952..eb76417d9a0 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php @@ -5,11 +5,13 @@ use Automattic\WooCommerce\Internal\DataStores\Orders\DataSynchronizer; use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; use Automattic\WooCommerce\Internal\Features\FeaturesController; use Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper; +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; /** * Tests for DataSynchronizer class. */ class DataSynchronizerTests extends WC_Unit_Test_Case { + use ArraySubsetAsserts; /** * @var DataSynchronizer diff --git a/plugins/woocommerce/tests/php/src/Internal/Orders/MobileMessagingHandlerTest.php b/plugins/woocommerce/tests/php/src/Internal/Orders/MobileMessagingHandlerTest.php index d2e415c8962..8c814234152 100644 --- a/plugins/woocommerce/tests/php/src/Internal/Orders/MobileMessagingHandlerTest.php +++ b/plugins/woocommerce/tests/php/src/Internal/Orders/MobileMessagingHandlerTest.php @@ -60,7 +60,7 @@ class MobileMessagingHandlerTest extends \WC_Unit_Test_Case { $mobile_message = MobileMessagingHandler::prepare_mobile_message( new WC_Order(), self::BLOG_ID, $now, self::DOMAIN ); - $this->assertContains( + $this->assertStringContainsString( 'href="https://woocommerce.com/mobile?blog_id=' . self::BLOG_ID . '&utm_campaign=deeplinks_promote_app&utm_medium=email&utm_source=' . self::DOMAIN . '&utm_term=' . self::BLOG_ID, $mobile_message ); @@ -76,7 +76,7 @@ class MobileMessagingHandlerTest extends \WC_Unit_Test_Case { $mobile_message = MobileMessagingHandler::prepare_mobile_message( $ipp_eligible_order, self::BLOG_ID, $now, self::DOMAIN ); - $this->assertContains( + $this->assertStringContainsString( 'href="https://woocommerce.com/mobile/orders/details?blog_id=' . self::BLOG_ID . '&order_id=' . self::ORDER_ID . '&utm_campaign=deeplinks_orders_details&utm_medium=email&utm_source=' . self::DOMAIN . '&utm_term=' . self::BLOG_ID, $mobile_message ); @@ -92,7 +92,7 @@ class MobileMessagingHandlerTest extends \WC_Unit_Test_Case { $mobile_message = MobileMessagingHandler::prepare_mobile_message( $ipp_eligible_order, self::BLOG_ID, $now, self::DOMAIN ); - $this->assertContains( + $this->assertStringContainsString( 'href="https://woocommerce.com/mobile/payments?blog_id=' . self::BLOG_ID . '&utm_campaign=deeplinks_payments&utm_medium=email&utm_source=' . self::DOMAIN . '&utm_term=' . self::BLOG_ID, $mobile_message ); @@ -112,7 +112,7 @@ class MobileMessagingHandlerTest extends \WC_Unit_Test_Case { $mobile_message = MobileMessagingHandler::prepare_mobile_message( $ipp_eligible_order, null, $now, self::DOMAIN ); - $this->assertContains( + $this->assertStringContainsString( 'href="https://woocommerce.com/mobile/payments?blog_id=0&utm_campaign=deeplinks_payments&utm_medium=email&utm_source=' . self::DOMAIN . '&utm_term=0', $mobile_message );