From f3760f138dcbaf7a2190336a0378cf1b2190c9f5 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 17 Apr 2023 08:30:21 +0200 Subject: Complete PHPStan Level 6 (#5305) * Complete PHPStan Level 6 Fix https://github.com/FreshRSS/FreshRSS/issues/4112 And initiate PHPStan Level 7 * PHPStan Level 6 for tests * Use phpstan/phpstan-phpunit * Update to PHPStan version 1.10 * Fix mixed bug * Fix mixed return bug * Fix paginator bug * Fix FreshRSS_UserConfiguration * A couple more Minz_Configuration bug fixes * A few trivial PHPStan Level 7 fixes * A few more simple PHPStan Level 7 * More files passing PHPStan Level 7 Add interface to replace removed class from https://github.com/FreshRSS/FreshRSS/pull/5251 * A few more PHPStan Level 7 preparations * A few last details --- tests/cli/i18n/I18nCompletionValidatorTest.php | 13 ++--- tests/cli/i18n/I18nDataTest.php | 68 +++++++++++++------------- tests/cli/i18n/I18nFileTest.php | 5 +- tests/cli/i18n/I18nUsageValidatorTest.php | 15 +++--- tests/cli/i18n/I18nValueTest.php | 18 +++---- 5 files changed, 62 insertions(+), 57 deletions(-) (limited to 'tests/cli') diff --git a/tests/cli/i18n/I18nCompletionValidatorTest.php b/tests/cli/i18n/I18nCompletionValidatorTest.php index 1aa871f20..1a361823d 100644 --- a/tests/cli/i18n/I18nCompletionValidatorTest.php +++ b/tests/cli/i18n/I18nCompletionValidatorTest.php @@ -4,6 +4,7 @@ require_once __DIR__ . '/../../../cli/i18n/I18nCompletionValidator.php'; require_once __DIR__ . '/../../../cli/i18n/I18nValue.php'; class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { + /** @var I18nValue&PHPUnit\Framework\MockObject\MockObject */ private $value; public function setUp(): void { @@ -12,7 +13,7 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { ->getMock(); } - public function testDisplayReport() { + public function testDisplayReport(): void { $validator = new I18nCompletionValidator([], []); $this->assertEquals("There is no data.\n", $validator->displayReport()); @@ -40,13 +41,13 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { $validator->displayReport(); } - public function testValidateWhenNoData() { + public function testValidateWhenNoData(): void { $validator = new I18nCompletionValidator([], []); $this->assertTrue($validator->validate()); $this->assertEquals('', $validator->displayResult()); } - public function testValidateWhenKeyIsMissing() { + public function testValidateWhenKeyIsMissing(): void { $validator = new I18nCompletionValidator([ 'file1.php' => [ 'file1.l1.l2.k1' => $this->value, @@ -60,7 +61,7 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals("Missing key file1.l1.l2.k1\nMissing key file2.l1.l2.k1\n", $validator->displayResult()); } - public function testValidateWhenKeyIsIgnored() { + public function testValidateWhenKeyIsIgnored(): void { $this->value->expects($this->exactly(2)) ->method('isIgnore') ->willReturn(true); @@ -85,7 +86,7 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals('', $validator->displayResult()); } - public function testValidateWhenValueIsEqual() { + public function testValidateWhenValueIsEqual(): void { $this->value->expects($this->exactly(2)) ->method('isIgnore') ->willReturn(false); @@ -113,7 +114,7 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals("Untranslated key file1.l1.l2.k1 - \nUntranslated key file2.l1.l2.k1 - \n", $validator->displayResult()); } - public function testValidateWhenValueIsDifferent() { + public function testValidateWhenValueIsDifferent(): void { $this->value->expects($this->exactly(2)) ->method('isIgnore') ->willReturn(false); diff --git a/tests/cli/i18n/I18nDataTest.php b/tests/cli/i18n/I18nDataTest.php index b27ad830c..37811c193 100644 --- a/tests/cli/i18n/I18nDataTest.php +++ b/tests/cli/i18n/I18nDataTest.php @@ -4,7 +4,9 @@ require_once __DIR__ . '/../../../cli/i18n/I18nData.php'; require_once __DIR__ . '/../../../cli/i18n/I18nValue.php'; class I18nDataTest extends PHPUnit\Framework\TestCase { + /** @var array>> */ private $referenceData; + /** @var I18nValue&PHPUnit\Framework\MockObject\MockObject */ private $value; public function setUp(): void { @@ -31,12 +33,12 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ]; } - public function testConstructWhenReferenceOnly() { + public function testConstructWhenReferenceOnly(): void { $data = new I18nData($this->referenceData); $this->assertEquals($this->referenceData, $data->getData()); } - public function testConstructorWhenLanguageIsMissingFile() { + public function testConstructorWhenLanguageIsMissingFile(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [ 'file1.php' => [ @@ -79,7 +81,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testConstructorWhenLanguageIsMissingKeys() { + public function testConstructorWhenLanguageIsMissingKeys(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [ 'file1.php' => [ @@ -125,7 +127,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testConstructorWhenLanguageHasExtraKeys() { + public function testConstructorWhenLanguageHasExtraKeys(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [ 'file1.php' => [ @@ -179,7 +181,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testConstructorWhenValueIsIdenticalAndIsMarkedAsIgnore() { + public function testConstructorWhenValueIsIdenticalAndIsMarkedAsIgnore(): void { $value = $this->getMockBuilder(I18nValue::class) ->disableOriginalConstructor() ->getMock(); @@ -204,7 +206,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { new I18nData($rawData); } - public function testConstructorWhenValueIsIdenticalAndIsNotMarkedAsIgnore() { + public function testConstructorWhenValueIsIdenticalAndIsNotMarkedAsIgnore(): void { $value = $this->getMockBuilder(I18nValue::class) ->disableOriginalConstructor() ->getMock(); @@ -229,7 +231,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { new I18nData($rawData); } - public function testConstructorWhenValueIsDifferentAndIsMarkedAsToDo() { + public function testConstructorWhenValueIsDifferentAndIsMarkedAsToDo(): void { $value = $this->getMockBuilder(I18nValue::class) ->disableOriginalConstructor() ->getMock(); @@ -249,7 +251,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { new I18nData($rawData); } - public function testConstructorWhenValueIsDifferentAndIsNotMarkedAsTodo() { + public function testConstructorWhenValueIsDifferentAndIsNotMarkedAsTodo(): void { $value = $this->getMockBuilder(I18nValue::class) ->disableOriginalConstructor() ->getMock(); @@ -269,7 +271,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { new I18nData($rawData); } - public function testGetAvailableLanguagesWhenTheyAreSorted() { + public function testGetAvailableLanguagesWhenTheyAreSorted(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], 'nl' => [], @@ -282,7 +284,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getAvailableLanguages()); } - public function testGetAvailableLanguagesWhenTheyAreNotSorted() { + public function testGetAvailableLanguagesWhenTheyAreNotSorted(): void { $rawData = array_merge($this->referenceData, [ 'nl' => [], 'fr' => [], @@ -297,14 +299,14 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getAvailableLanguages()); } - public function testAddLanguageWhenLanguageExists() { + public function testAddLanguageWhenLanguageExists(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('The selected language already exist.'); $data = new I18nData($this->referenceData); $data->addLanguage('en'); } - public function testAddLanguageWhenNoReferenceProvided() { + public function testAddLanguageWhenNoReferenceProvided(): void { $data = new I18nData($this->referenceData); $data->addLanguage('fr'); $this->assertEquals([ @@ -341,7 +343,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testAddLanguageWhenUnknownReferenceProvided() { + public function testAddLanguageWhenUnknownReferenceProvided(): void { $data = new I18nData($this->referenceData); $data->addLanguage('fr', 'unknown'); $this->assertEquals([ @@ -378,7 +380,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testAddLanguageWhenKnownReferenceProvided() { + public function testAddLanguageWhenKnownReferenceProvided(): void { $data = new I18nData($this->referenceData); $data->addLanguage('fr', 'en'); $this->assertEquals([ @@ -415,24 +417,24 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testIsKnownWhenKeyExists() { + public function testIsKnownWhenKeyExists(): void { $data = new I18nData($this->referenceData); $this->assertTrue($data->isKnown('file2.l1.l2.k2')); } - public function testIsKnownWhenKeyDoesNotExist() { + public function testIsKnownWhenKeyDoesNotExist(): void { $data = new I18nData($this->referenceData); $this->assertFalse($data->isKnown('file2.l1.l2.k3')); } - public function testAddKeyWhenKeyExists() { + public function testAddKeyWhenKeyExists(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('The selected key already exist.'); $data = new I18nData($this->referenceData); $data->addKey('file2.l1.l2.k1', 'value'); } - public function testAddKeyWhenParentKeyExists() { + public function testAddKeyWhenParentKeyExists(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], ]); @@ -447,7 +449,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertTrue($data->isKnown('file2.l1.l2.k1.sk1')); } - public function testAddKeyWhenKeyIsParent() { + public function testAddKeyWhenKeyIsParent(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], ]); @@ -462,7 +464,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertTrue($data->isKnown('file1.l1.l2.k2')); } - public function testAddKey() { + public function testAddKey(): void { $getTargetedValue = static function (I18nData $data, string $language) { return $data->getData()[$language]['file2.php']['file2.l1.l2.k3']; }; @@ -484,21 +486,21 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertEquals($frValue, $enValue); } - public function testAddValueWhenLanguageDoesNotExist() { + public function testAddValueWhenLanguageDoesNotExist(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('The selected language does not exist.'); $data = new I18nData($this->referenceData); $data->addValue('file2.l1.l2.k2', 'new value', 'fr'); } - public function testAddValueWhenKeyDoesNotExist() { + public function testAddValueWhenKeyDoesNotExist(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('The selected key does not exist for the selected language.'); $data = new I18nData($this->referenceData); $data->addValue('unknown key', 'new value', 'en'); } - public function testAddValueWhenLanguageIsReferenceAndValueInOtherLanguageHasNotChange() { + public function testAddValueWhenLanguageIsReferenceAndValueInOtherLanguageHasNotChange(): void { $getTargetedValue = static function (I18nData $data, string $language) { return $data->getData()[$language]['file2.php']['file2.l1.l2.k2']; }; @@ -526,7 +528,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertEquals('new value', $afterFrValue->getValue()); } - public function testAddValueWhenLanguageIsReferenceAndValueInOtherLanguageHasChange() { + public function testAddValueWhenLanguageIsReferenceAndValueInOtherLanguageHasChange(): void { $getTargetedValue = static function (I18nData $data, string $language) { return $data->getData()[$language]['file2.php']['file2.l1.l2.k2']; }; @@ -561,7 +563,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertEquals($value, $afterFrValue); } - public function testAddValueWhenLanguageIsNotReference() { + public function testAddValueWhenLanguageIsNotReference(): void { $getTargetedValue = static function (I18nData $data, string $language) { return $data->getData()[$language]['file2.php']['file2.l1.l2.k2']; }; @@ -583,21 +585,21 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertEquals('new value', $afterFrValue->getValue()); } - public function testRemoveKeyWhenKeyDoesNotExist() { + public function testRemoveKeyWhenKeyDoesNotExist(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('The selected key does not exist.'); $data = new I18nData($this->referenceData); $data->removeKey('Unknown key'); } - public function testRemoveKeyWhenKeyHasNoEmptySibling() { + public function testRemoveKeyWhenKeyHasNoEmptySibling(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('The selected key does not exist.'); $data = new I18nData($this->referenceData); $data->removeKey('file1.l1.l2'); } - public function testRemoveKeyWhenKeyIsEmptySibling() { + public function testRemoveKeyWhenKeyIsEmptySibling(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], ]); @@ -635,7 +637,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testRemoveKeyWhenKeyIsTheOnlyChild() { + public function testRemoveKeyWhenKeyIsTheOnlyChild(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], ]); @@ -673,7 +675,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { ], $data->getData()); } - public function testIgnore() { + public function testIgnore(): void { $value = $this->getMockBuilder(I18nValue::class) ->disableOriginalConstructor() ->getMock(); @@ -695,7 +697,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $data->ignore('file1.l1.l2.k1', 'fr', false); } - public function testIgnoreUnmodified() { + public function testIgnoreUnmodified(): void { $value = $this->getMockBuilder(I18nValue::class) ->disableOriginalConstructor() ->getMock(); @@ -722,7 +724,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $data->ignore_unmodified('fr', false); } - public function testGetLanguage() { + public function testGetLanguage(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], 'nl' => [], @@ -731,7 +733,7 @@ class I18nDataTest extends PHPUnit\Framework\TestCase { $this->assertEquals($this->referenceData['en'], $data->getLanguage('en')); } - public function testGetReferenceLanguage() { + public function testGetReferenceLanguage(): void { $rawData = array_merge($this->referenceData, [ 'fr' => [], 'nl' => [], diff --git a/tests/cli/i18n/I18nFileTest.php b/tests/cli/i18n/I18nFileTest.php index 26566ddf1..662c14608 100644 --- a/tests/cli/i18n/I18nFileTest.php +++ b/tests/cli/i18n/I18nFileTest.php @@ -3,7 +3,7 @@ require_once __DIR__ . '/../../../cli/i18n/I18nFile.php'; class I18nFileTest extends PHPUnit\Framework\TestCase { - public function test() { + public function test(): void { $before = $this->computeFilesHash(); $file = new I18nFile(); @@ -15,7 +15,8 @@ class I18nFileTest extends PHPUnit\Framework\TestCase { $this->assertEquals($before, $after); } - private function computeFilesHash() { + /** @return array */ + private function computeFilesHash(): array { $hashes = []; $dirs = new DirectoryIterator(I18N_PATH); diff --git a/tests/cli/i18n/I18nUsageValidatorTest.php b/tests/cli/i18n/I18nUsageValidatorTest.php index 531e77c5d..fdd75bf64 100644 --- a/tests/cli/i18n/I18nUsageValidatorTest.php +++ b/tests/cli/i18n/I18nUsageValidatorTest.php @@ -4,6 +4,7 @@ require_once __DIR__ . '/../../../cli/i18n/I18nValue.php'; require_once __DIR__ . '/../../../cli/i18n/I18nUsageValidator.php'; class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { + /** @var I18nValue */ private $value; public function setUp(): void { @@ -12,7 +13,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { ->getMock(); } - public function testDisplayReport() { + public function testDisplayReport(): void { $validator = new I18nUsageValidator([], []); $this->assertEquals("There is no data.\n", $validator->displayReport()); @@ -40,13 +41,13 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { $validator->displayReport(); } - public function testValidateWhenNoData() { + public function testValidateWhenNoData(): void { $validator = new I18nUsageValidator([], []); $this->assertTrue($validator->validate()); $this->assertEquals('', $validator->displayResult()); } - public function testValidateWhenParentKeyExistsWithoutTransformation() { + public function testValidateWhenParentKeyExistsWithoutTransformation(): void { $validator = new I18nUsageValidator([ 'file1' => [ 'file1.l1.l2._' => $this->value, @@ -62,7 +63,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals('', $validator->displayResult()); } - public function testValidateWhenParentKeyExistsWithTransformation() { + public function testValidateWhenParentKeyExistsWithTransformation(): void { $validator = new I18nUsageValidator([ 'file1' => [ 'file1.l1.l2._' => $this->value, @@ -78,7 +79,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals('', $validator->displayResult()); } - public function testValidateWhenParentKeyDoesNotExist() { + public function testValidateWhenParentKeyDoesNotExist(): void { $validator = new I18nUsageValidator([ 'file1' => [ 'file1.l1.l2._' => $this->value, @@ -91,7 +92,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals("Unused key file1.l1.l2._ - \nUnused key file2.l1.l2._ - \n", $validator->displayResult()); } - public function testValidateWhenChildKeyExists() { + public function testValidateWhenChildKeyExists(): void { $validator = new I18nUsageValidator([ 'file1' => [ 'file1.l1.l2.k1' => $this->value, @@ -107,7 +108,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { $this->assertEquals('', $validator->displayResult()); } - public function testValidateWhenChildKeyDoesNotExist() { + public function testValidateWhenChildKeyDoesNotExist(): void { $validator = new I18nUsageValidator([ 'file1' => [ 'file1.l1.l2.k1' => $this->value, diff --git a/tests/cli/i18n/I18nValueTest.php b/tests/cli/i18n/I18nValueTest.php index cabc8e072..7a1109a20 100644 --- a/tests/cli/i18n/I18nValueTest.php +++ b/tests/cli/i18n/I18nValueTest.php @@ -3,35 +3,35 @@ require_once __DIR__ . '/../../../cli/i18n/I18nValue.php'; class I18nValueTest extends PHPUnit\Framework\TestCase { - public function testConstructorWithoutState() { + public function testConstructorWithoutState(): void { $value = new I18nValue('some value'); $this->assertEquals('some value', $value->getValue()); $this->assertFalse($value->isIgnore()); $this->assertFalse($value->isTodo()); } - public function testConstructorWithUnknownState() { + public function testConstructorWithUnknownState(): void { $value = new I18nValue('some value -> unknown'); $this->assertEquals('some value', $value->getValue()); $this->assertFalse($value->isIgnore()); $this->assertFalse($value->isTodo()); } - public function testConstructorWithTodoState() { + public function testConstructorWithTodoState(): void { $value = new I18nValue('some value -> todo'); $this->assertEquals('some value', $value->getValue()); $this->assertFalse($value->isIgnore()); $this->assertTrue($value->isTodo()); } - public function testConstructorWithIgnoreState() { + public function testConstructorWithIgnoreState(): void { $value = new I18nValue('some value -> ignore'); $this->assertEquals('some value', $value->getValue()); $this->assertTrue($value->isIgnore()); $this->assertFalse($value->isTodo()); } - public function testClone() { + public function testClone(): void { $value = new I18nValue('some value'); $clonedValue = clone $value; $this->assertEquals('some value', $value->getValue()); @@ -42,21 +42,21 @@ class I18nValueTest extends PHPUnit\Framework\TestCase { $this->assertTrue($clonedValue->isTodo()); } - public function testEqualWhenValueIsIdentical() { + public function testEqualWhenValueIsIdentical(): void { $value = new I18nValue('some value'); $clonedValue = clone $value; $this->assertTrue($value->equal($clonedValue)); $this->assertTrue($clonedValue->equal($value)); } - public function testEqualWhenValueIsDifferent() { + public function testEqualWhenValueIsDifferent(): void { $value = new I18nValue('some value'); $otherValue = new I18nValue('some other value'); $this->assertFalse($value->equal($otherValue)); $this->assertFalse($otherValue->equal($value)); } - public function testStates() { + public function testStates(): void { $reflectionProperty = new ReflectionProperty(I18nValue::class, 'state'); $reflectionProperty->setAccessible(true); @@ -74,7 +74,7 @@ class I18nValueTest extends PHPUnit\Framework\TestCase { $this->assertEquals('todo', $reflectionProperty->getValue($value)); } - public function testToString() { + public function testToString(): void { $value = new I18nValue('some value'); $this->assertEquals('some value', $value->__toString()); $value->markAsTodo(); -- cgit v1.2.3