From 252956d6b29c44ff764cd8286578e96c823b26e1 Mon Sep 17 00:00:00 2001 From: Abhinav Ohri Date: Fri, 12 Dec 2025 01:45:07 +0530 Subject: [PATCH 1/2] test: fix PHPUnit deprecations and mocking issues Signed-off-by: Abhinav Ohri --- .../CalDAV/Integration/ExternalCalendarTest.php | 4 +++- apps/encryption/tests/Crypto/EncryptAllTest.php | 4 ++-- .../tests/FrontendDefinitionTraitTest.php | 10 +++++++--- .../tests/LegacyDependencyCheckPolyfillTest.php | 13 +++++++++---- .../SetupChecks/DataDirectoryProtectedTest.php | 8 +++----- .../settings/tests/SetupChecks/OcxProvicersTest.php | 4 +--- .../tests/SetupChecks/SecurityHeadersTest.php | 6 ++---- .../tests/SetupChecks/WellKnownUrlsTest.php | 6 ++---- 8 files changed, 29 insertions(+), 26 deletions(-) diff --git a/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php b/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php index b2f479ac0e3..9bb761350a4 100644 --- a/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php @@ -18,7 +18,9 @@ class ExternalCalendarTest extends TestCase { parent::setUp(); $this->abstractExternalCalendar - = $this->getMockForAbstractClass(ExternalCalendar::class, ['example-app-id', 'calendar-uri-in-backend']); + = $this->getMockBuilder(ExternalCalendar::class) + ->setConstructorArgs(['example-app-id', 'calendar-uri-in-backend']) + ->getMock(); } public function testGetName():void { diff --git a/apps/encryption/tests/Crypto/EncryptAllTest.php b/apps/encryption/tests/Crypto/EncryptAllTest.php index 17af5dc52b4..8d8bc9867ca 100644 --- a/apps/encryption/tests/Crypto/EncryptAllTest.php +++ b/apps/encryption/tests/Crypto/EncryptAllTest.php @@ -103,10 +103,10 @@ class EncryptAllTest extends TestCase { $this->user2 = $this->createMock(IUser::class); $this->user2->method('getUID')->willReturn('user2'); - $this->userManager->expects($this->any())->method('getSeenUsers')->will($this->returnCallback(function () { + $this->userManager->expects($this->any())->method('getSeenUsers')->willReturnCallback(function () { yield $this->user1; yield $this->user2; - })); + }); $this->secureRandom = $this->getMockBuilder(ISecureRandom::class)->disableOriginalConstructor()->getMock(); $this->secureRandom->expects($this->any())->method('generate')->willReturn('12345678'); diff --git a/apps/files_external/tests/FrontendDefinitionTraitTest.php b/apps/files_external/tests/FrontendDefinitionTraitTest.php index e0bf066e70a..5c4c227402d 100644 --- a/apps/files_external/tests/FrontendDefinitionTraitTest.php +++ b/apps/files_external/tests/FrontendDefinitionTraitTest.php @@ -11,6 +11,10 @@ use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\FrontendDefinitionTrait; use OCA\Files_External\Lib\StorageConfig; +class MockFrontendDefinitionTrait { + use FrontendDefinitionTrait; +} + class FrontendDefinitionTraitTest extends \Test\TestCase { public function testJsonSerialization(): void { $param = $this->getMockBuilder(DefinitionParameter::class) @@ -18,7 +22,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->getMock(); $param->method('getName')->willReturn('foo'); - $trait = $this->getMockForTrait(FrontendDefinitionTrait::class); + $trait = new MockFrontendDefinitionTrait(); $trait->setText('test'); $trait->addParameters([$param]); $trait->addCustomJs('foo/bar.js'); @@ -67,7 +71,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { $storageConfig->expects($this->any()) ->method('setBackendOption'); - $trait = $this->getMockForTrait(FrontendDefinitionTrait::class); + $trait = new MockFrontendDefinitionTrait(); $trait->setText('test'); $trait->addParameters($backendParams); @@ -98,7 +102,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->method('setBackendOption') ->with('param', 'foobar'); - $trait = $this->getMockForTrait(FrontendDefinitionTrait::class); + $trait = new MockFrontendDefinitionTrait(); $trait->setText('test'); $trait->addParameter($param); diff --git a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php index d26aa752ea1..98ea03bb88b 100644 --- a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php +++ b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php @@ -11,6 +11,14 @@ namespace OCA\Files_External\Tests; use OCA\Files_External\Lib\LegacyDependencyCheckPolyfill; use OCA\Files_External\Lib\MissingDependency; +class MockLegacyDependencyCheckPolyfill { + use LegacyDependencyCheckPolyfill; + + public function getStorageClass(): string { + return LegacyDependencyCheckPolyfillTest::class; + } +} + class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { /** @@ -24,10 +32,7 @@ class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { } public function testCheckDependencies(): void { - $trait = $this->getMockForTrait(LegacyDependencyCheckPolyfill::class); - $trait->expects($this->once()) - ->method('getStorageClass') - ->willReturn(self::class); + $trait = new MockLegacyDependencyCheckPolyfill(); $dependencies = $trait->checkDependencies(); $this->assertCount(2, $dependencies); diff --git a/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php b/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php index c20c78c6e16..cdf69ae612d 100644 --- a/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php +++ b/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php @@ -66,7 +66,7 @@ class DataDirectoryProtectedTest extends TestCase { $this->setupcheck ->expects($this->once()) ->method('runRequest') - ->will($this->generate($responses)); + ->willReturn($this->generate($responses)); $this->config ->expects($this->once()) @@ -94,7 +94,7 @@ class DataDirectoryProtectedTest extends TestCase { $this->setupcheck ->expects($this->once()) ->method('runRequest') - ->will($this->generate([])); + ->willReturn($this->generate([])); $this->config ->expects($this->once()) @@ -110,8 +110,6 @@ class DataDirectoryProtectedTest extends TestCase { * Helper function creates a nicer interface for mocking Generator behavior */ protected function generate(array $yield_values) { - return $this->returnCallback(function () use ($yield_values) { - yield from $yield_values; - }); + yield from $yield_values; } } diff --git a/apps/settings/tests/SetupChecks/OcxProvicersTest.php b/apps/settings/tests/SetupChecks/OcxProvicersTest.php index 8e5a2c1b88b..65afa181307 100644 --- a/apps/settings/tests/SetupChecks/OcxProvicersTest.php +++ b/apps/settings/tests/SetupChecks/OcxProvicersTest.php @@ -144,8 +144,6 @@ class OcxProvicersTest extends TestCase { * Helper function creates a nicer interface for mocking Generator behavior */ protected function generate(array $yield_values) { - return $this->returnCallback(function () use ($yield_values) { - yield from $yield_values; - }); + yield from $yield_values; } } diff --git a/apps/settings/tests/SetupChecks/SecurityHeadersTest.php b/apps/settings/tests/SetupChecks/SecurityHeadersTest.php index 1f75907d427..d596a441a7d 100644 --- a/apps/settings/tests/SetupChecks/SecurityHeadersTest.php +++ b/apps/settings/tests/SetupChecks/SecurityHeadersTest.php @@ -182,15 +182,13 @@ class SecurityHeadersTest extends TestCase { $this->setupcheck ->expects($this->atLeastOnce()) ->method('runRequest') - ->willReturnOnConsecutiveCalls($this->generate([$response])); + ->willReturn($this->generate([$response])); } /** * Helper function creates a nicer interface for mocking Generator behavior */ protected function generate(array $yield_values) { - return $this->returnCallback(function () use ($yield_values) { - yield from $yield_values; - }); + yield from $yield_values; } } diff --git a/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php b/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php index 06675f658c8..c3311200303 100644 --- a/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php +++ b/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php @@ -87,7 +87,7 @@ class WellKnownUrlsTest extends TestCase { $this->setupcheck ->expects($this->once()) ->method('runRequest') - ->will($this->generate([])); + ->willReturn($this->generate([])); $result = $this->setupcheck->run(); $this->assertEquals(SetupResult::INFO, $result->getSeverity()); @@ -219,8 +219,6 @@ class WellKnownUrlsTest extends TestCase { * Helper function creates a nicer interface for mocking Generator behavior */ protected function generate(array $yield_values) { - return $this->returnCallback(function () use ($yield_values) { - yield from $yield_values; - }); + yield from $yield_values; } } From f89613b5072e2cb3142f7b78631814f31b72a5cb Mon Sep 17 00:00:00 2001 From: Abhinav Ohri Date: Mon, 15 Dec 2025 14:22:20 +0530 Subject: [PATCH 2/2] refactor(testing): Rename mock trait classes for clarity Signed-off-by: Abhinav Ohri --- apps/files_external/tests/FrontendDefinitionTraitTest.php | 8 ++++---- .../tests/LegacyDependencyCheckPolyfillTest.php | 4 ++-- apps/settings/tests/SetupChecks/SecurityHeadersTest.php | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/files_external/tests/FrontendDefinitionTraitTest.php b/apps/files_external/tests/FrontendDefinitionTraitTest.php index 5c4c227402d..afab9aa46e8 100644 --- a/apps/files_external/tests/FrontendDefinitionTraitTest.php +++ b/apps/files_external/tests/FrontendDefinitionTraitTest.php @@ -11,7 +11,7 @@ use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\FrontendDefinitionTrait; use OCA\Files_External\Lib\StorageConfig; -class MockFrontendDefinitionTrait { +class MockFrontendDefinitionTraitClass { use FrontendDefinitionTrait; } @@ -22,7 +22,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->getMock(); $param->method('getName')->willReturn('foo'); - $trait = new MockFrontendDefinitionTrait(); + $trait = new MockFrontendDefinitionTraitClass(); $trait->setText('test'); $trait->addParameters([$param]); $trait->addCustomJs('foo/bar.js'); @@ -71,7 +71,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { $storageConfig->expects($this->any()) ->method('setBackendOption'); - $trait = new MockFrontendDefinitionTrait(); + $trait = new MockFrontendDefinitionTraitClass(); $trait->setText('test'); $trait->addParameters($backendParams); @@ -102,7 +102,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->method('setBackendOption') ->with('param', 'foobar'); - $trait = new MockFrontendDefinitionTrait(); + $trait = new MockFrontendDefinitionTraitClass(); $trait->setText('test'); $trait->addParameter($param); diff --git a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php index 98ea03bb88b..3edefe5188b 100644 --- a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php +++ b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php @@ -11,7 +11,7 @@ namespace OCA\Files_External\Tests; use OCA\Files_External\Lib\LegacyDependencyCheckPolyfill; use OCA\Files_External\Lib\MissingDependency; -class MockLegacyDependencyCheckPolyfill { +class MockLegacyDependencyCheckPolyfillClass { use LegacyDependencyCheckPolyfill; public function getStorageClass(): string { @@ -32,7 +32,7 @@ class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { } public function testCheckDependencies(): void { - $trait = new MockLegacyDependencyCheckPolyfill(); + $trait = new MockLegacyDependencyCheckPolyfillClass(); $dependencies = $trait->checkDependencies(); $this->assertCount(2, $dependencies); diff --git a/apps/settings/tests/SetupChecks/SecurityHeadersTest.php b/apps/settings/tests/SetupChecks/SecurityHeadersTest.php index d596a441a7d..e5d32ef7ecf 100644 --- a/apps/settings/tests/SetupChecks/SecurityHeadersTest.php +++ b/apps/settings/tests/SetupChecks/SecurityHeadersTest.php @@ -182,7 +182,7 @@ class SecurityHeadersTest extends TestCase { $this->setupcheck ->expects($this->atLeastOnce()) ->method('runRequest') - ->willReturn($this->generate([$response])); + ->willReturn($this->generate([$response])); } /**