chore: migrate to PHPUnit 11

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
pull/55870/head
Ferdinand Thiessen 2025-10-21 00:00:15 +07:00
parent fafc07a19d
commit e3b34891b0
No known key found for this signature in database
GPG Key ID: 45FAE7268762B400
14 changed files with 804 additions and 681 deletions

@ -68,4 +68,4 @@ jobs:
php -f tests/enable_all.php
- 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

@ -99,7 +99,7 @@ jobs:
php -f tests/enable_all.php
- 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
if: ${{ !cancelled() && matrix.coverage }}

@ -105,7 +105,7 @@ jobs:
php -f tests/enable_all.php
- 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
if: ${{ !cancelled() && matrix.coverage }}

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

@ -53,7 +53,7 @@ else
fi
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
exit 3
fi
@ -69,8 +69,8 @@ PHPUNIT_VERSION=$($PHPUNIT --version | cut -d" " -f2)
PHPUNIT_MAJOR_VERSION=$(echo "$PHPUNIT_VERSION" | cut -d"." -f1)
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
echo "phpunit version >= 10.5 required. Version found: $PHPUNIT_VERSION" >&2
if ! [ "$PHPUNIT_MAJOR_VERSION" -gt 11 -o \( "$PHPUNIT_MAJOR_VERSION" -eq 11 -a "$PHPUNIT_MINOR_VERSION" -ge 5 \) ]; then
echo "phpunit version >= 11.5 required. Version found: $PHPUNIT_VERSION" >&2
exit 4
fi

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

File diff suppressed because it is too large Load Diff

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

@ -72,7 +72,7 @@
"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: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",
"rector": "rector --config=build/rector.php && composer cs:fix",
"openapi": "./build/openapi-checker.sh"

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

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

@ -20,6 +20,7 @@ use OCP\IConfig;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Server;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
@ -31,16 +32,11 @@ use Test\TestCase;
*/
#[\PHPUnit\Framework\Attributes\Group('DB')]
class ManagerTest extends TestCase {
/** @var IConfig */
private $config;
/** @var IEventDispatcher */
private $eventDispatcher;
/** @var ICacheFactory */
private $cacheFactory;
/** @var ICache */
private $cache;
/** @var LoggerInterface */
private $logger;
private IConfig&MockObject $config;
private IEventDispatcher&MockObject $eventDispatcher;
private ICacheFactory&MockObject $cacheFactory;
private ICache&MockObject $cache;
private LoggerInterface&MockObject $logger;
protected function setUp(): void {
parent::setUp();
@ -68,7 +64,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -98,7 +94,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -120,7 +116,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -129,7 +125,7 @@ class ManagerTest extends TestCase {
->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->expects($this->once())
@ -146,7 +142,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -155,7 +151,7 @@ class ManagerTest extends TestCase {
->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->expects($this->never())
@ -170,7 +166,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -197,7 +193,7 @@ class ManagerTest extends TestCase {
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->expects($this->never())
@ -215,7 +211,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -233,7 +229,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -263,7 +259,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -281,7 +277,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -304,7 +300,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -315,7 +311,7 @@ class ManagerTest extends TestCase {
->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->expects($this->once())
@ -370,7 +366,7 @@ class ManagerTest extends TestCase {
#[\PHPUnit\Framework\Attributes\DataProvider('dataCreateUserInvalid')]
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->expects($this->once())
->method('implementsActions')
@ -387,7 +383,7 @@ class ManagerTest extends TestCase {
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->expects($this->any())
@ -417,7 +413,7 @@ class ManagerTest extends TestCase {
$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->expects($this->any())
@ -440,7 +436,7 @@ class ManagerTest extends TestCase {
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->expects($this->any())
@ -470,9 +466,7 @@ class ManagerTest extends TestCase {
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Could not create account');
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject $config */
$config = $this->createMock(IConfig::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
->expects($this->once())
@ -489,7 +483,7 @@ class ManagerTest extends TestCase {
$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->expects($this->any())
@ -505,7 +499,7 @@ class ManagerTest extends TestCase {
->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->expects($this->any())
@ -537,7 +531,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -566,7 +560,7 @@ class ManagerTest extends TestCase {
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->expects($this->once())
@ -753,6 +747,7 @@ class ManagerTest extends TestCase {
}
public function testDeleteUser(): void {
/** @var AllConfig&MockObject */
$config = $this->getMockBuilder(AllConfig::class)
->disableOriginalConstructor()
->getMock();
@ -776,6 +771,7 @@ class ManagerTest extends TestCase {
}
public function testGetByEmail(): void {
/** @var AllConfig&MockObject */
$config = $this->getMockBuilder(AllConfig::class)
->disableOriginalConstructor()
->getMock();

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

File diff suppressed because it is too large Load Diff