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
This commit is contained in:
Néstor Soriano 2023-01-16 08:58:09 +01:00 committed by GitHub
parent 235709ebf7
commit 443b563335
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 282 additions and 448 deletions

View File

@ -13,63 +13,50 @@ concurrency:
permissions: {} permissions: {}
jobs: jobs:
test: test:
name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} name: PHP ${{ matrix.php }} WP ${{ matrix.wp }}
timeout-minutes: 30 timeout-minutes: 30
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
permissions: permissions:
contents: read contents: read
continue-on-error: ${{ matrix.wp == 'nightly' }} continue-on-error: ${{ matrix.wp == 'nightly' }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
php: ['7.4', '8.0'] php: [ '7.4', '8.0' ]
wp: ['latest'] wp: [ "latest" ]
include: include:
- wp: nightly - wp: nightly
php: '7.4' php: '7.4'
- wp: '5.9' - wp: '6.0'
php: 7.4 php: 7.4
- wp: '5.8' - wp: '5.9'
php: 7.4 php: 7.4
services: services:
database: database:
image: mysql:5.6 image: mysql:5.6
env: env:
MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_PASSWORD: root
ports: ports:
- 3306:3306 - 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Setup WooCommerce Monorepo - name: Setup WooCommerce Monorepo
uses: ./.github/actions/setup-woocommerce-monorepo uses: ./.github/actions/setup-woocommerce-monorepo
with: with:
php-version: ${{ matrix.php }} php-version: ${{ matrix.php }}
- name: Tool versions - name: Tool versions
run: | run: |
php --version php --version
composer --version composer --version
- name: Add PHP8 Compatibility. - name: Init DB and WP
run: | working-directory: plugins/woocommerce
if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }}
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 - name: Run tests
working-directory: plugins/woocommerce working-directory: plugins/woocommerce
run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }} run: pnpm run test --filter=woocommerce --color
- name: Run tests
working-directory: plugins/woocommerce
run: pnpm run test --filter=woocommerce --color

View File

@ -1169,5 +1169,5 @@
"platform-overrides": { "platform-overrides": {
"php": "7.3" "php": "7.3"
}, },
"plugin-api-version": "2.3.0" "plugin-api-version": "2.0.0"
} }

View File

@ -475,5 +475,5 @@
"platform-overrides": { "platform-overrides": {
"php": "7.2" "php": "7.2"
}, },
"plugin-api-version": "2.3.0" "plugin-api-version": "2.0.0"
} }

View File

@ -1697,5 +1697,5 @@
"platform-overrides": { "platform-overrides": {
"php": "7.0" "php": "7.0"
}, },
"plugin-api-version": "2.3.0" "plugin-api-version": "2.0.0"
} }

View File

@ -687,5 +687,5 @@
"platform-overrides": { "platform-overrides": {
"php": "7.0" "php": "7.0"
}, },
"plugin-api-version": "2.3.0" "plugin-api-version": "2.0.0"
} }

View File

@ -0,0 +1,4 @@
Significance: patch
Type: dev
Upgrade PHPUnit to v8

View File

@ -24,11 +24,12 @@
"woocommerce/woocommerce-blocks": "9.1.4" "woocommerce/woocommerce-blocks": "9.1.4"
}, },
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.4",
"yoast/phpunit-polyfills": "^1.0",
"phpunit/phpunit": "7.5.20",
"automattic/jetpack-changelogger": "^3.3.0", "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": { "config": {
"optimize-autoloader": true, "optimize-autoloader": true,

View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "5d6aa45a4ccd532e09383828f396c06d", "content-hash": "c00f9ad96d703d7e841895190ec42436",
"packages": [ "packages": [
{ {
"name": "automattic/jetpack-autoloader", "name": "automattic/jetpack-autoloader",
@ -797,31 +797,76 @@
"time": "2022-02-22T21:01:25+00:00" "time": "2022-02-22T21:01:25+00:00"
}, },
{ {
"name": "doctrine/instantiator", "name": "dms/phpunit-arraysubset-asserts",
"version": "1.4.1", "version": "v0.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/instantiator.git", "url": "https://github.com/rdohms/phpunit-arraysubset-asserts.git",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" "reference": "428293c2a00eceefbad71a2dbdfb913febb35de2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", "url": "https://api.github.com/repos/rdohms/phpunit-arraysubset-asserts/zipball/428293c2a00eceefbad71a2dbdfb913febb35de2",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "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": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.1 || ^8.0" "php": "^7.1 || ^8.0"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^9", "doctrine/coding-standard": "^9 || ^11",
"ext-pdo": "*", "ext-pdo": "*",
"ext-phar": "*", "ext-phar": "*",
"phpbench/phpbench": "^0.16 || ^1", "phpbench/phpbench": "^0.16 || ^1",
"phpstan/phpstan": "^1.4", "phpstan/phpstan": "^1.4",
"phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-phpunit": "^1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.22" "vimeo/psalm": "^4.30 || ^5.4"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -848,7 +893,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/instantiator/issues", "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": [ "funding": [
{ {
@ -864,7 +909,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-03-03T08:28:38+00:00" "time": "2022-12-30T00:15:36+00:00"
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
@ -927,28 +972,29 @@
}, },
{ {
"name": "phar-io/manifest", "name": "phar-io/manifest",
"version": "1.0.3", "version": "2.0.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phar-io/manifest.git", "url": "https://github.com/phar-io/manifest.git",
"reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
"reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-dom": "*", "ext-dom": "*",
"ext-phar": "*", "ext-phar": "*",
"phar-io/version": "^2.0", "ext-xmlwriter": "*",
"php": "^5.6 || ^7.0" "phar-io/version": "^3.0.1",
"php": "^7.2 || ^8.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.0.x-dev" "dev-master": "2.0.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -980,26 +1026,26 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": { "support": {
"issues": "https://github.com/phar-io/manifest/issues", "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", "name": "phar-io/version",
"version": "2.0.1", "version": "3.2.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phar-io/version.git", "url": "https://github.com/phar-io/version.git",
"reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.6 || ^7.0" "php": "^7.2 || ^8.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -1031,273 +1077,46 @@
"description": "Library for handling version information and constraints", "description": "Library for handling version information and constraints",
"support": { "support": {
"issues": "https://github.com/phar-io/version/issues", "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" "time": "2022-02-21T01:04:05+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"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "6.1.4", "version": "7.0.15",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" "reference": "819f92bba8b001d4363065928088de22f25a3a48"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48",
"reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "reference": "819f92bba8b001d4363065928088de22f25a3a48",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-dom": "*", "ext-dom": "*",
"ext-xmlwriter": "*", "ext-xmlwriter": "*",
"php": "^7.1", "php": ">=7.2",
"phpunit/php-file-iterator": "^2.0", "phpunit/php-file-iterator": "^2.0.2",
"phpunit/php-text-template": "^1.2.1", "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/code-unit-reverse-lookup": "^1.0.1",
"sebastian/environment": "^3.1 || ^4.0", "sebastian/environment": "^4.2.2",
"sebastian/version": "^2.0.1", "sebastian/version": "^2.0.1",
"theseer/tokenizer": "^1.1" "theseer/tokenizer": "^1.1.3"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^7.0" "phpunit/phpunit": "^8.2.2"
}, },
"suggest": { "suggest": {
"ext-xdebug": "^2.6.0" "ext-xdebug": "^2.7.2"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "6.1-dev" "dev-master": "7.0-dev"
} }
}, },
"autoload": { "autoload": {
@ -1325,9 +1144,15 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "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", "name": "phpunit/php-file-iterator",
@ -1555,53 +1380,48 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "7.5.20", "version": "8.5.29",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "9467db479d1b0487c99733bb1e7944d32deded2c" "reference": "e8c563c47a9a303662955518ca532b022b337f4d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8c563c47a9a303662955518ca532b022b337f4d",
"reference": "9467db479d1b0487c99733bb1e7944d32deded2c", "reference": "e8c563c47a9a303662955518ca532b022b337f4d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"doctrine/instantiator": "^1.1", "doctrine/instantiator": "^1.3.1",
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*", "ext-json": "*",
"ext-libxml": "*", "ext-libxml": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"ext-xml": "*", "ext-xml": "*",
"myclabs/deep-copy": "^1.7", "ext-xmlwriter": "*",
"phar-io/manifest": "^1.0.2", "myclabs/deep-copy": "^1.10.0",
"phar-io/version": "^2.0", "phar-io/manifest": "^2.0.3",
"php": "^7.1", "phar-io/version": "^3.0.2",
"phpspec/prophecy": "^1.7", "php": ">=7.2",
"phpunit/php-code-coverage": "^6.0.7", "phpunit/php-code-coverage": "^7.0.12",
"phpunit/php-file-iterator": "^2.0.1", "phpunit/php-file-iterator": "^2.0.4",
"phpunit/php-text-template": "^1.2.1", "phpunit/php-text-template": "^1.2.1",
"phpunit/php-timer": "^2.1", "phpunit/php-timer": "^2.1.2",
"sebastian/comparator": "^3.0", "sebastian/comparator": "^3.0.2",
"sebastian/diff": "^3.0", "sebastian/diff": "^3.0.2",
"sebastian/environment": "^4.0", "sebastian/environment": "^4.2.3",
"sebastian/exporter": "^3.1", "sebastian/exporter": "^3.1.2",
"sebastian/global-state": "^2.0", "sebastian/global-state": "^3.0.0",
"sebastian/object-enumerator": "^3.0.3", "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" "sebastian/version": "^2.0.1"
}, },
"conflict": {
"phpunit/phpunit-mock-objects": "*"
},
"require-dev": {
"ext-pdo": "*"
},
"suggest": { "suggest": {
"ext-soap": "*", "ext-soap": "*",
"ext-xdebug": "*", "ext-xdebug": "*",
"phpunit/php-invoker": "^2.0" "phpunit/php-invoker": "^2.0.0"
}, },
"bin": [ "bin": [
"phpunit" "phpunit"
@ -1609,7 +1429,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "7.5-dev" "dev-master": "8.5-dev"
} }
}, },
"autoload": { "autoload": {
@ -1637,9 +1457,19 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "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", "name": "psr/log",
@ -2028,23 +1858,26 @@
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
"version": "2.0.0", "version": "3.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git", "url": "https://github.com/sebastianbergmann/global-state.git",
"reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921",
"reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.0" "php": ">=7.2",
"sebastian/object-reflector": "^1.1.1",
"sebastian/recursion-context": "^3.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^6.0" "ext-dom": "*",
"phpunit/phpunit": "^8.0"
}, },
"suggest": { "suggest": {
"ext-uopz": "*" "ext-uopz": "*"
@ -2052,7 +1885,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.0-dev" "dev-master": "3.0-dev"
} }
}, },
"autoload": { "autoload": {
@ -2077,9 +1910,15 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues", "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", "name": "sebastian/object-enumerator",
@ -2308,6 +2147,62 @@
], ],
"time": "2020-11-30T07:30:19+00:00" "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", "name": "sebastian/version",
"version": "2.0.1", "version": "2.0.1",
@ -2702,64 +2597,6 @@
], ],
"time": "2021-07-28T10:34:58+00:00" "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", "name": "wikimedia/at-ease",
"version": "v2.0.0", "version": "v2.0.0",
@ -2889,5 +2726,5 @@
"platform-overrides": { "platform-overrides": {
"php": "7.2" "php": "7.2"
}, },
"plugin-api-version": "2.3.0" "plugin-api-version": "2.0.0"
} }

View File

@ -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\FunctionsMockerHack;
use Automattic\WooCommerce\Testing\Tools\CodeHacking\Hacks\BypassFinalsHack; use Automattic\WooCommerce\Testing\Tools\CodeHacking\Hacks\BypassFinalsHack;
use Automattic\WooCommerce\Testing\Tools\DependencyManagement\MockableLegacyProxy; use Automattic\WooCommerce\Testing\Tools\DependencyManagement\MockableLegacyProxy;
\PHPUnit\Framework\Error\Deprecated::$enabled = false;
/** /**
* Class WC_Unit_Tests_Bootstrap * Class WC_Unit_Tests_Bootstrap
*/ */

View File

@ -9,11 +9,14 @@
use Automattic\WooCommerce\Internal\Admin\Schedulers\CustomersScheduler; use Automattic\WooCommerce\Internal\Admin\Schedulers\CustomersScheduler;
use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler; use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler;
use \Automattic\WooCommerce\Admin\API\Reports\Orders\Stats\DataStore as OrdersStatsDataStore; 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
*/ */
class WC_Admin_Tests_API_Init extends WC_REST_Unit_Test_Case { class WC_Admin_Tests_API_Init extends WC_REST_Unit_Test_Case {
use ArraySubsetAsserts;
/** /**
* Set up. * Set up.
*/ */

View File

@ -8,6 +8,7 @@
use Automattic\WooCommerce\Internal\Admin\Schedulers\CustomersScheduler; use Automattic\WooCommerce\Internal\Admin\Schedulers\CustomersScheduler;
use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler; use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler;
use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
/** /**
* Reports Generation Batch Queue Test Class * Reports Generation Batch Queue Test Class
@ -16,6 +17,8 @@ use Automattic\WooCommerce\Internal\Admin\Schedulers\OrdersScheduler;
* @since 3.5.0 * @since 3.5.0
*/ */
class WC_Admin_Tests_Reports_Regenerate_Batching extends WC_REST_Unit_Test_Case { class WC_Admin_Tests_Reports_Regenerate_Batching extends WC_REST_Unit_Test_Case {
use ArraySubsetAsserts;
/** /**
* Queue batch size. * Queue batch size.
* *

View File

@ -25,7 +25,7 @@ class WC_Admin_Tests_Category_Lookup extends WP_UnitTestCase {
* Setup * Setup
*/ */
public function setUp() { public function setUp(): void {
delete_transient('wc_installing'); delete_transient('wc_installing');
parent::setUp(); parent::setUp();
$parent = wp_insert_term( 'test_parent', 'product_cat' ); $parent = wp_insert_term( 'test_parent', 'product_cat' );

View File

@ -29,18 +29,19 @@ class WC_Admin_Tests_RemoteInboxNotifications_TransformerService extends WC_Unit
} }
/** /**
* @expectedException InvalidArgumentException * @testdox An exception is thrown when the transformer config is missing 'use'
* @expectedExceptionMessage Missing required config value: use
*/ */
public function test_it_throw_exception_when_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 ); TransformerService::apply( array( 'value' ), array( new stdClass() ), null );
} }
/** /**
* @expectedException InvalidArgumentException * @testdox An exception is thrown when the transformer is not found
* @expectedExceptionMessage Unable to find a transformer by name: i_do_not_exist
*/ */
public function test_it_throws_exception_when_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' ); $transformer = $this->transformer_config( 'i_do_not_exist' );
TransformerService::apply( array( 'value' ), array( $transformer ), null ); TransformerService::apply( array( 'value' ), array( $transformer ), null );
} }

View File

@ -56,7 +56,7 @@ class WC_Emails_Tests extends \WC_Unit_Test_Case {
$email_object->order_meta( $order, true, true ); $email_object->order_meta( $order, true, true );
$content = ob_get_contents(); $content = ob_get_contents();
ob_end_clean(); ob_end_clean();
$this->assertContains( 'dummy_key', $content ); $this->assertStringContainsString( 'dummy_key', $content );
$this->assertContains( 'dummy_meta_value', $content ); $this->assertStringContainsString( 'dummy_meta_value', $content );
} }
} }

View File

@ -121,15 +121,13 @@ class WC_Attribute_Functions_Test extends \WC_Unit_Test_Case {
$ids = array(); $ids = array();
$ids[] = wc_create_attribute( array( 'name' => 'Brand' ) ); $ids[] = wc_create_attribute( array( 'name' => 'Brand' ) );
$this->assertInternalType( $this->assertIsInt(
'int',
end( $ids ), end( $ids ),
'wc_create_attribute should return a numeric id on success.' 'wc_create_attribute should return a numeric id on success.'
); );
$ids[] = wc_create_attribute( array( 'name' => str_repeat( 'n', 28 ) ) ); $ids[] = wc_create_attribute( array( 'name' => str_repeat( 'n', 28 ) ) );
$this->assertInternalType( $this->assertIsInt(
'int',
end( $ids ), end( $ids ),
'Attribute creation should succeed when its slug is 28 characters long.' 'Attribute creation should succeed when its slug is 28 characters long.'
); );

View File

@ -362,7 +362,7 @@ class ReviewsTest extends WC_Unit_Test_Case {
$result = $method->invoke( $reviews ); $result = $method->invoke( $reviews );
foreach ( $expected_result as $i => $expected_message ) { foreach ( $expected_result as $i => $expected_message ) {
$this->assertContains( $expected_message, $result[ $i ] ); $this->assertStringContainsString( $expected_message, $result[ $i ] );
} }
} }

View File

@ -144,7 +144,6 @@ class BatchProcessingControllerTests extends WC_Unit_Test_Case {
*/ */
public function test_process_single_update_unfinished() { public function test_process_single_update_unfinished() {
$test_process_mock = $this->getMockBuilder( get_class( $this->test_process ) )->getMock(); $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->method( 'get_total_pending_count' )->willReturn( 10 );
$test_process_mock->expects( $this->once() )->method( 'get_next_batch_to_process' )->willReturn( array( 'dummy_id' ) ); $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() { public function test_process_single_update_finished() {
$test_process_mock = $this->getMockBuilder( get_class( $this->test_process ) )->getMock(); $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->method( 'get_total_pending_count' )->willReturn( 0 );
$test_process_mock->expects( $this->once() )->method( 'get_next_batch_to_process' )->willReturn( array( 'dummy_id' ) ); $test_process_mock->expects( $this->once() )->method( 'get_next_batch_to_process' )->willReturn( array( 'dummy_id' ) );

View File

@ -5,11 +5,13 @@ use Automattic\WooCommerce\Internal\DataStores\Orders\DataSynchronizer;
use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore;
use Automattic\WooCommerce\Internal\Features\FeaturesController; use Automattic\WooCommerce\Internal\Features\FeaturesController;
use Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper; use Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper;
use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
/** /**
* Tests for DataSynchronizer class. * Tests for DataSynchronizer class.
*/ */
class DataSynchronizerTests extends WC_Unit_Test_Case { class DataSynchronizerTests extends WC_Unit_Test_Case {
use ArraySubsetAsserts;
/** /**
* @var DataSynchronizer * @var DataSynchronizer

View File

@ -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 ); $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 . '&#038;utm_campaign=deeplinks_promote_app&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=' . self::BLOG_ID, 'href="https://woocommerce.com/mobile?blog_id=' . self::BLOG_ID . '&#038;utm_campaign=deeplinks_promote_app&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=' . self::BLOG_ID,
$mobile_message $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 ); $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 . '&#038;order_id=' . self::ORDER_ID . '&#038;utm_campaign=deeplinks_orders_details&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=' . self::BLOG_ID, 'href="https://woocommerce.com/mobile/orders/details?blog_id=' . self::BLOG_ID . '&#038;order_id=' . self::ORDER_ID . '&#038;utm_campaign=deeplinks_orders_details&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=' . self::BLOG_ID,
$mobile_message $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 ); $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 . '&#038;utm_campaign=deeplinks_payments&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=' . self::BLOG_ID, 'href="https://woocommerce.com/mobile/payments?blog_id=' . self::BLOG_ID . '&#038;utm_campaign=deeplinks_payments&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=' . self::BLOG_ID,
$mobile_message $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 ); $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&#038;utm_campaign=deeplinks_payments&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=0', 'href="https://woocommerce.com/mobile/payments?blog_id=0&#038;utm_campaign=deeplinks_payments&#038;utm_medium=email&#038;utm_source=' . self::DOMAIN . '&#038;utm_term=0',
$mobile_message $mobile_message
); );