chore: migrate to PHPUnit 11

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2025-10-21 00:00:15 +02:00
parent fafc07a19d
commit e3b34891b0
No known key found for this signature in database
GPG key ID: 45FAE7268762B400
14 changed files with 817 additions and 694 deletions

View file

@ -68,4 +68,4 @@ jobs:
php -f tests/enable_all.php php -f tests/enable_all.php
- name: PHPUnit - name: PHPUnit
run: composer run test -- --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness run: composer run test -- --exclude-group PRIMARY-azure --exclude-group PRIMARY-s3 --exclude-group PRIMARY-swift --exclude-group Memcached --exclude-group Redis --exclude-group RoutingWeirdness

View file

@ -99,7 +99,7 @@ jobs:
php -f tests/enable_all.php php -f tests/enable_all.php
- name: PHPUnit memcached tests - name: PHPUnit memcached tests
run: composer run test -- --group Memcache,Memcached --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }} run: composer run test -- --group Memcache --group Memcached --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage - name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }} if: ${{ !cancelled() && matrix.coverage }}

View file

@ -105,7 +105,7 @@ jobs:
php -f tests/enable_all.php php -f tests/enable_all.php
- name: PHPUnit nodb testsuite - name: PHPUnit nodb testsuite
run: composer run test -- --exclude-group DB,SLOWDB --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.nodb.xml' || '' }} run: composer run test -- --exclude-group DB --exclude-group SLOWDB --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.nodb.xml' || '' }}
- name: Upload nodb code coverage - name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }} if: ${{ !cancelled() && matrix.coverage }}

View file

@ -175,7 +175,7 @@ class IMipPluginCharsetTest extends TestCase {
->with('core', 'mail_providers_enabled', true) ->with('core', 'mail_providers_enabled', true)
->willReturn(true); ->willReturn(true);
$mailMessage = new MailProviderMessage(); $mailMessage = new MailProviderMessage();
$mailService = $this->createStubForIntersectionOfInterfaces([IService::class, IMessageSend::class]); $mailService = $this->createMockForIntersectionOfInterfaces([IService::class, IMessageSend::class]);
$mailService->method('initiateMessage') $mailService->method('initiateMessage')
->willReturn($mailMessage); ->willReturn($mailMessage);
$mailService->expects(self::once()) $mailService->expects(self::once())

View file

@ -53,7 +53,7 @@ else
fi fi
if ! [ -x "$PHPUNIT" ]; then if ! [ -x "$PHPUNIT" ]; then
echo "phpunit executable not found, please install phpunit version >= 10.5 manually or via:" >&2 echo "phpunit executable not found, please install phpunit version >= 11.5 manually or via:" >&2
echo " composer install" >&2 echo " composer install" >&2
exit 3 exit 3
fi fi
@ -69,8 +69,8 @@ PHPUNIT_VERSION=$($PHPUNIT --version | cut -d" " -f2)
PHPUNIT_MAJOR_VERSION=$(echo "$PHPUNIT_VERSION" | cut -d"." -f1) PHPUNIT_MAJOR_VERSION=$(echo "$PHPUNIT_VERSION" | cut -d"." -f1)
PHPUNIT_MINOR_VERSION=$(echo "$PHPUNIT_VERSION" | cut -d"." -f2) PHPUNIT_MINOR_VERSION=$(echo "$PHPUNIT_VERSION" | cut -d"." -f2)
if ! [ "$PHPUNIT_MAJOR_VERSION" -gt 10 -o \( "$PHPUNIT_MAJOR_VERSION" -eq 10 -a "$PHPUNIT_MINOR_VERSION" -ge 5 \) ]; then if ! [ "$PHPUNIT_MAJOR_VERSION" -gt 11 -o \( "$PHPUNIT_MAJOR_VERSION" -eq 11 -a "$PHPUNIT_MINOR_VERSION" -ge 5 \) ]; then
echo "phpunit version >= 10.5 required. Version found: $PHPUNIT_VERSION" >&2 echo "phpunit version >= 11.5 required. Version found: $PHPUNIT_VERSION" >&2
exit 4 exit 4
fi fi

View file

@ -1,15 +1,14 @@
{ {
"config": { "config": {
"platform": { "platform": {
"php": "8.1" "php": "8.2"
}, },
"sort-packages": true "sort-packages": true
}, },
"require-dev": { "require-dev": {
"behat/behat": "^3.15", "behat/behat": "^3.15",
"dms/phpunit-arraysubset-asserts": "^0.5",
"guzzlehttp/guzzle": "^7.9", "guzzlehttp/guzzle": "^7.9",
"phpunit/phpunit": "^9.6", "phpunit/phpunit": "^11.5",
"sabre/dav": "^4.7", "sabre/dav": "^4.7",
"symfony/event-dispatcher": "^6.4" "symfony/event-dispatcher": "^6.4"
} }

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@
* SPDX-FileCopyrightText: 2017 ownCloud GmbH * SPDX-FileCopyrightText: 2017 ownCloud GmbH
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
use DMS\PHPUnitExtensions\ArraySubset\Assert as AssertArraySubset;
use PHPUnit\Framework\Assert; use PHPUnit\Framework\Assert;
require __DIR__ . '/../../vendor/autoload.php'; require __DIR__ . '/../../vendor/autoload.php';
@ -121,7 +121,9 @@ trait Trashbin {
return $item['{http://nextcloud.org/ns}trashbin-filename']; return $item['{http://nextcloud.org/ns}trashbin-filename'];
}, $elementList)); }, $elementList));
AssertArraySubset::assertArraySubset([$name], array_values($trashContent)); if (array_search($name, array_values($trashContent)) === false) {
Assert::fail("$name" . ' is not in trash listing');
}
} }
/** /**

View file

@ -72,7 +72,7 @@
"PHP_CLI_SERVER_WORKERS=${NEXTCLOUD_WORKERS:=4} php -S ${NEXTCLOUD_HOST:=localhost}:${NEXTCLOUD_PORT:=8080} -t ./" "PHP_CLI_SERVER_WORKERS=${NEXTCLOUD_WORKERS:=4} php -S ${NEXTCLOUD_HOST:=localhost}:${NEXTCLOUD_PORT:=8080} -t ./"
], ],
"test": "phpunit --fail-on-warning --fail-on-risky --display-warnings --display-deprecations --display-phpunit-deprecations --colors=always --configuration tests/phpunit-autotest.xml", "test": "phpunit --fail-on-warning --fail-on-risky --display-warnings --display-deprecations --display-phpunit-deprecations --colors=always --configuration tests/phpunit-autotest.xml",
"test:db": "@composer run test -- --group DB,SLOWDB", "test:db": "@composer run test -- --group DB --group SLOWDB",
"test:files_external": "phpunit --fail-on-warning --fail-on-risky --display-warnings --display-deprecations --display-phpunit-deprecations --colors=always --configuration tests/phpunit-autotest-external.xml", "test:files_external": "phpunit --fail-on-warning --fail-on-risky --display-warnings --display-deprecations --display-phpunit-deprecations --colors=always --configuration tests/phpunit-autotest-external.xml",
"rector": "rector --config=build/rector.php && composer cs:fix", "rector": "rector --config=build/rector.php && composer cs:fix",
"openapi": "./build/openapi-checker.sh" "openapi": "./build/openapi-checker.sh"

View file

@ -39,7 +39,6 @@ class FilenameValidatorTest extends TestCase {
$this->l10n = $this->createMock(IFactory::class); $this->l10n = $this->createMock(IFactory::class);
$this->l10n $this->l10n
->method('get') ->method('get')
->with('core')
->willReturn($l10n); ->willReturn($l10n);
$this->config = $this->createMock(IConfig::class); $this->config = $this->createMock(IConfig::class);

View file

@ -10,6 +10,7 @@ namespace Test\Traits;
use OCP\Http\Client\IClient; use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService; use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse; use OCP\Http\Client\IResponse;
use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount;
trait ClientServiceTrait { trait ClientServiceTrait {
/** @var IClientService|\PHPUnit\Framework\MockObject\MockObject */ /** @var IClientService|\PHPUnit\Framework\MockObject\MockObject */
@ -31,11 +32,10 @@ trait ClientServiceTrait {
* Returns a matcher that matches when the method is executed * Returns a matcher that matches when the method is executed
* zero or more times. * zero or more times.
* *
* @return \PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount * @since Method available since Release 3.0.0
* * @since 33.0.0 - non static and hard typed return type due to phpunit upgrade to v11
* @since Method available since Release 3.0.0
*/ */
abstract public static function any(); abstract public function any(): AnyInvokedCount;
protected function setUpClientServiceTrait() { protected function setUpClientServiceTrait() {
$this->clientService = $this->createMock(IClientService::class); $this->clientService = $this->createMock(IClientService::class);

View file

@ -20,6 +20,7 @@ use OCP\IConfig;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\Server; use OCP\Server;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Test\TestCase; use Test\TestCase;
@ -31,16 +32,11 @@ use Test\TestCase;
*/ */
#[\PHPUnit\Framework\Attributes\Group('DB')] #[\PHPUnit\Framework\Attributes\Group('DB')]
class ManagerTest extends TestCase { class ManagerTest extends TestCase {
/** @var IConfig */ private IConfig&MockObject $config;
private $config; private IEventDispatcher&MockObject $eventDispatcher;
/** @var IEventDispatcher */ private ICacheFactory&MockObject $cacheFactory;
private $eventDispatcher; private ICache&MockObject $cache;
/** @var ICacheFactory */ private LoggerInterface&MockObject $logger;
private $cacheFactory;
/** @var ICache */
private $cache;
/** @var LoggerInterface */
private $logger;
protected function setUp(): void { protected function setUp(): void {
parent::setUp(); parent::setUp();
@ -68,7 +64,7 @@ class ManagerTest extends TestCase {
public function testUserExistsSingleBackendExists(): void { public function testUserExistsSingleBackendExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -98,7 +94,7 @@ class ManagerTest extends TestCase {
public function testUserExistsSingleBackendNotExists(): void { public function testUserExistsSingleBackendNotExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -120,7 +116,7 @@ class ManagerTest extends TestCase {
public function testUserExistsTwoBackendsSecondExists(): void { public function testUserExistsTwoBackendsSecondExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend1 * @var \Test\Util\User\Dummy&MockObject $backend1
*/ */
$backend1 = $this->createMock(\Test\Util\User\Dummy::class); $backend1 = $this->createMock(\Test\Util\User\Dummy::class);
$backend1->expects($this->once()) $backend1->expects($this->once())
@ -129,7 +125,7 @@ class ManagerTest extends TestCase {
->willReturn(false); ->willReturn(false);
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend2 * @var \Test\Util\User\Dummy&MockObject $backend2
*/ */
$backend2 = $this->createMock(\Test\Util\User\Dummy::class); $backend2 = $this->createMock(\Test\Util\User\Dummy::class);
$backend2->expects($this->once()) $backend2->expects($this->once())
@ -146,7 +142,7 @@ class ManagerTest extends TestCase {
public function testUserExistsTwoBackendsFirstExists(): void { public function testUserExistsTwoBackendsFirstExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend1 * @var \Test\Util\User\Dummy&MockObject $backend1
*/ */
$backend1 = $this->createMock(\Test\Util\User\Dummy::class); $backend1 = $this->createMock(\Test\Util\User\Dummy::class);
$backend1->expects($this->once()) $backend1->expects($this->once())
@ -155,7 +151,7 @@ class ManagerTest extends TestCase {
->willReturn(true); ->willReturn(true);
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend2 * @var \Test\Util\User\Dummy&MockObject $backend2
*/ */
$backend2 = $this->createMock(\Test\Util\User\Dummy::class); $backend2 = $this->createMock(\Test\Util\User\Dummy::class);
$backend2->expects($this->never()) $backend2->expects($this->never())
@ -170,7 +166,7 @@ class ManagerTest extends TestCase {
public function testCheckPassword(): void { public function testCheckPassword(): void {
/** /**
* @var \OC\User\Backend | \PHPUnit\Framework\MockObject\MockObject $backend * @var \OC\User\Backend&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -197,7 +193,7 @@ class ManagerTest extends TestCase {
public function testCheckPasswordNotSupported(): void { public function testCheckPasswordNotSupported(): void {
/** /**
* @var \OC\User\Backend | \PHPUnit\Framework\MockObject\MockObject $backend * @var \OC\User\Backend&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->never()) $backend->expects($this->never())
@ -215,7 +211,7 @@ class ManagerTest extends TestCase {
public function testGetOneBackendExists(): void { public function testGetOneBackendExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -233,7 +229,7 @@ class ManagerTest extends TestCase {
public function testGetOneBackendNotExists(): void { public function testGetOneBackendNotExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -263,7 +259,7 @@ class ManagerTest extends TestCase {
public function testGetOneBackendDoNotTranslateLoginNames(): void { public function testGetOneBackendDoNotTranslateLoginNames(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -281,7 +277,7 @@ class ManagerTest extends TestCase {
public function testSearchOneBackend(): void { public function testSearchOneBackend(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -304,7 +300,7 @@ class ManagerTest extends TestCase {
public function testSearchTwoBackendLimitOffset(): void { public function testSearchTwoBackendLimitOffset(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend1 * @var \Test\Util\User\Dummy&MockObject $backend1
*/ */
$backend1 = $this->createMock(\Test\Util\User\Dummy::class); $backend1 = $this->createMock(\Test\Util\User\Dummy::class);
$backend1->expects($this->once()) $backend1->expects($this->once())
@ -315,7 +311,7 @@ class ManagerTest extends TestCase {
->method('loginName2UserName'); ->method('loginName2UserName');
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend2 * @var \Test\Util\User\Dummy&MockObject $backend2
*/ */
$backend2 = $this->createMock(\Test\Util\User\Dummy::class); $backend2 = $this->createMock(\Test\Util\User\Dummy::class);
$backend2->expects($this->once()) $backend2->expects($this->once())
@ -370,7 +366,7 @@ class ManagerTest extends TestCase {
#[\PHPUnit\Framework\Attributes\DataProvider('dataCreateUserInvalid')] #[\PHPUnit\Framework\Attributes\DataProvider('dataCreateUserInvalid')]
public function testCreateUserInvalid($uid, $password, $exception): void { public function testCreateUserInvalid($uid, $password, $exception): void {
/** @var \Test\Util\User\Dummy|\PHPUnit\Framework\MockObject\MockObject $backend */ /** @var \Test\Util\User\Dummy&MockObject $backend */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
->method('implementsActions') ->method('implementsActions')
@ -387,7 +383,7 @@ class ManagerTest extends TestCase {
public function testCreateUserSingleBackendNotExists(): void { public function testCreateUserSingleBackendNotExists(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->any()) $backend->expects($this->any())
@ -417,7 +413,7 @@ class ManagerTest extends TestCase {
$this->expectException(\Exception::class); $this->expectException(\Exception::class);
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->any()) $backend->expects($this->any())
@ -440,7 +436,7 @@ class ManagerTest extends TestCase {
public function testCreateUserSingleBackendNotSupported(): void { public function testCreateUserSingleBackendNotSupported(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->any()) $backend->expects($this->any())
@ -470,9 +466,7 @@ class ManagerTest extends TestCase {
$this->expectException(\InvalidArgumentException::class); $this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Could not create account'); $this->expectExceptionMessage('Could not create account');
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject $config */ /** @var \Test\Util\User\Dummy&MockObject $backend */
$config = $this->createMock(IConfig::class);
/** @var \Test\Util\User\Dummy|\PHPUnit\Framework\MockObject\MockObject $backend */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend $backend
->expects($this->once()) ->expects($this->once())
@ -489,7 +483,7 @@ class ManagerTest extends TestCase {
$this->expectException(\Exception::class); $this->expectException(\Exception::class);
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend1 * @var \Test\Util\User\Dummy&MockObject $backend1
*/ */
$backend1 = $this->createMock(\Test\Util\User\Dummy::class); $backend1 = $this->createMock(\Test\Util\User\Dummy::class);
$backend1->expects($this->any()) $backend1->expects($this->any())
@ -505,7 +499,7 @@ class ManagerTest extends TestCase {
->willReturn(false); ->willReturn(false);
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend2 * @var \Test\Util\User\Dummy&MockObject $backend2
*/ */
$backend2 = $this->createMock(\Test\Util\User\Dummy::class); $backend2 = $this->createMock(\Test\Util\User\Dummy::class);
$backend2->expects($this->any()) $backend2->expects($this->any())
@ -537,7 +531,7 @@ class ManagerTest extends TestCase {
public function testCountUsersOneBackend(): void { public function testCountUsersOneBackend(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once()) $backend->expects($this->once())
@ -566,7 +560,7 @@ class ManagerTest extends TestCase {
public function testCountUsersTwoBackends(): void { public function testCountUsersTwoBackends(): void {
/** /**
* @var \Test\Util\User\Dummy | \PHPUnit\Framework\MockObject\MockObject $backend * @var \Test\Util\User\Dummy&MockObject $backend
*/ */
$backend1 = $this->createMock(\Test\Util\User\Dummy::class); $backend1 = $this->createMock(\Test\Util\User\Dummy::class);
$backend1->expects($this->once()) $backend1->expects($this->once())
@ -753,6 +747,7 @@ class ManagerTest extends TestCase {
} }
public function testDeleteUser(): void { public function testDeleteUser(): void {
/** @var AllConfig&MockObject */
$config = $this->getMockBuilder(AllConfig::class) $config = $this->getMockBuilder(AllConfig::class)
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
@ -776,6 +771,7 @@ class ManagerTest extends TestCase {
} }
public function testGetByEmail(): void { public function testGetByEmail(): void {
/** @var AllConfig&MockObject */
$config = $this->getMockBuilder(AllConfig::class) $config = $this->getMockBuilder(AllConfig::class)
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();

View file

@ -6,6 +6,6 @@
} }
}, },
"require": { "require": {
"phpunit/phpunit": "^10.5.35" "phpunit/phpunit": "^11.5"
} }
} }

File diff suppressed because it is too large Load diff