diff options
| author | 2024-09-06 09:06:46 +0200 | |
|---|---|---|
| committer | 2024-09-06 09:06:46 +0200 | |
| commit | a81656c3ed5b8fe0f31794a4fbe0d1a907fca8e8 (patch) | |
| tree | 8bf49bd876aaebc985a9fb1214863190a799cbee /tests | |
| parent | 8f7c3473a76809efc88814253722c76f0cc8eb04 (diff) | |
Upgrade to PHP 8.1 (#6711)
* Upgrade to PHP 8.1
As discussed in https://github.com/FreshRSS/FreshRSS/discussions/5474
https://www.php.net/releases/8.0/en.php
https://www.php.net/releases/8.1/en.php
Upgrade to available native type declarations
https://php.net/language.types.declarations
Upgrade to https://phpunit.de/announcements/phpunit-10.html which requires PHP 8.1+ (good timing, as version 9 was not maintained anymore)
Upgrade `:oldest` Docker dev image to oldest Alpine version supporting PHP 8.1: Alpine 3.16, which includes PHP 8.1.22.
* Include 6736
https://github.com/FreshRSS/FreshRSS/pull/6736
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/README.md | 17 | ||||
| -rw-r--r-- | tests/app/Models/CategoryTest.php | 12 | ||||
| -rw-r--r-- | tests/app/Models/FeedDAOTest.php | 2 | ||||
| -rw-r--r-- | tests/app/Models/SearchTest.php | 77 | ||||
| -rw-r--r-- | tests/app/Models/UserQueryTest.php | 36 | ||||
| -rw-r--r-- | tests/app/Utils/dotNotationUtilTest.php | 8 | ||||
| -rw-r--r-- | tests/cli/CliOptionsParserTest.php | 129 | ||||
| -rw-r--r-- | tests/cli/i18n/I18nCompletionValidatorTest.php | 2 | ||||
| -rw-r--r-- | tests/cli/i18n/I18nUsageValidatorTest.php | 2 | ||||
| -rw-r--r-- | tests/cli/i18n/I18nValueTest.php | 18 | ||||
| -rw-r--r-- | tests/lib/CssXPath/CssXPathTest.php | 2 | ||||
| -rw-r--r-- | tests/lib/Minz/MigratorTest.php | 42 | ||||
| -rw-r--r-- | tests/lib/PHPMailer/PHPMailerTest.php | 2 |
13 files changed, 167 insertions, 182 deletions
diff --git a/tests/README.md b/tests/README.md index 311461d0c..59035a775 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,8 +1,23 @@ # FreshRSS tests +See our [documentation about running tests](https://freshrss.github.io/FreshRSS/en/developers/03_Running_tests.html). + +```sh +make test-all +``` + +See [`test.yml`](../.github/workflows/tests.yml) for the GitHub Actions automated tests. + +See [`composer.json`](../composer.json) for the different tests and versions, to be run locally. + +## Details about this *tests* folder + +Unit tests are based on [PHPUnit](https://phpunit.de/). +Here is an example of manual install: + ```sh cd ./tests/ -wget -O phpunit.phar https://phar.phpunit.de/phpunit-9.phar +wget -O phpunit.phar https://phar.phpunit.de/phpunit-10.phar php phpunit.phar --bootstrap bootstrap.php ``` diff --git a/tests/app/Models/CategoryTest.php b/tests/app/Models/CategoryTest.php index c9e88a32d..f9aa1a280 100644 --- a/tests/app/Models/CategoryTest.php +++ b/tests/app/Models/CategoryTest.php @@ -1,24 +1,24 @@ <?php declare(strict_types=1); +use PHPUnit\Framework\Attributes\DataProvider; + class CategoryTest extends PHPUnit\Framework\TestCase { - public function test__construct_whenNoParameters_createsObjectWithDefaultValues(): void { + public static function test__construct_whenNoParameters_createsObjectWithDefaultValues(): void { $category = new FreshRSS_Category(); self::assertEquals(0, $category->id()); self::assertEquals('', $category->name()); } - /** - * @dataProvider provideValidNames - */ - public function test_name_whenValidValue_storesModifiedValue(string $input, string $expected): void { + #[DataProvider('provideValidNames')] + public static function test_name_whenValidValue_storesModifiedValue(string $input, string $expected): void { $category = new FreshRSS_Category($input); self::assertEquals($expected, $category->name()); } /** @return array<array{string,string}> */ - public function provideValidNames(): array { + public static function provideValidNames(): array { return [ ['', ''], ['this string does not need trimming', 'this string does not need trimming'], diff --git a/tests/app/Models/FeedDAOTest.php b/tests/app/Models/FeedDAOTest.php index cd197bf9e..31cfc57f9 100644 --- a/tests/app/Models/FeedDAOTest.php +++ b/tests/app/Models/FeedDAOTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); class FeedDAOTest extends PHPUnit\Framework\TestCase { - public function test_ttl_min(): void { + public static function test_ttl_min(): void { $feed = new FreshRSS_Feed('https://example.net/', false); $feed->_ttl(-5); self::assertEquals(-5, $feed->ttl(true)); diff --git a/tests/app/Models/SearchTest.php b/tests/app/Models/SearchTest.php index e01830314..27943cdb2 100644 --- a/tests/app/Models/SearchTest.php +++ b/tests/app/Models/SearchTest.php @@ -1,13 +1,14 @@ <?php declare(strict_types=1); + +use PHPUnit\Framework\Attributes\DataProvider; + require_once(LIB_PATH . '/lib_date.php'); class SearchTest extends PHPUnit\Framework\TestCase { - /** - * @dataProvider provideEmptyInput - */ - public function test__construct_whenInputIsEmpty_getsOnlyNullValues(string $input): void { + #[DataProvider('provideEmptyInput')] + public static function test__construct_whenInputIsEmpty_getsOnlyNullValues(string $input): void { $search = new FreshRSS_Search($input); self::assertEquals('', $search->getRawInput()); self::assertNull($search->getIntitle()); @@ -25,7 +26,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { * Here is the description of the values * @return array{array{''},array{' '}} */ - public function provideEmptyInput(): array { + public static function provideEmptyInput(): array { return [ [''], [' '], @@ -33,11 +34,11 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideIntitleSearch * @param array<string>|null $intitle_value * @param array<string>|null $search_value */ - public function test__construct_whenInputContainsIntitle_setsIntitleProperty(string $input, ?array $intitle_value, ?array $search_value): void { + #[DataProvider('provideIntitleSearch')] + public static function test__construct_whenInputContainsIntitle_setsIntitleProperty(string $input, ?array $intitle_value, ?array $search_value): void { $search = new FreshRSS_Search($input); self::assertEquals($intitle_value, $search->getIntitle()); self::assertEquals($search_value, $search->getSearch()); @@ -46,7 +47,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { /** * @return array<array<mixed>> */ - public function provideIntitleSearch(): array { + public static function provideIntitleSearch(): array { return [ ['intitle:word1', ['word1'], null], ['intitle:word1-word2', ['word1-word2'], null], @@ -70,11 +71,11 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideAuthorSearch * @param array<string>|null $author_value * @param array<string>|null $search_value */ - public function test__construct_whenInputContainsAuthor_setsAuthorValue(string $input, ?array $author_value, ?array $search_value): void { + #[DataProvider('provideAuthorSearch')] + public static function test__construct_whenInputContainsAuthor_setsAuthorValue(string $input, ?array $author_value, ?array $search_value): void { $search = new FreshRSS_Search($input); self::assertEquals($author_value, $search->getAuthor()); self::assertEquals($search_value, $search->getSearch()); @@ -83,7 +84,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { /** * @return array<array<mixed>> */ - public function provideAuthorSearch(): array { + public static function provideAuthorSearch(): array { return [ ['author:word1', ['word1'], null], ['author:word1-word2', ['word1-word2'], null], @@ -107,11 +108,11 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideInurlSearch * @param array<string>|null $inurl_value * @param array<string>|null $search_value */ - public function test__construct_whenInputContainsInurl_setsInurlValue(string $input, ?array $inurl_value, ?array $search_value): void { + #[DataProvider('provideInurlSearch')] + public static function test__construct_whenInputContainsInurl_setsInurlValue(string $input, ?array $inurl_value, ?array $search_value): void { $search = new FreshRSS_Search($input); self::assertEquals($inurl_value, $search->getInurl()); self::assertEquals($search_value, $search->getSearch()); @@ -120,7 +121,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { /** * @return array<array<mixed>> */ - public function provideInurlSearch(): array { + public static function provideInurlSearch(): array { return [ ['inurl:word1', ['word1'], null], ['inurl: word1', [], ['word1']], @@ -133,10 +134,8 @@ class SearchTest extends PHPUnit\Framework\TestCase { ]; } - /** - * @dataProvider provideDateSearch - */ - public function test__construct_whenInputContainsDate_setsDateValues(string $input, ?int $min_date_value, ?int $max_date_value): void { + #[DataProvider('provideDateSearch')] + public static function test__construct_whenInputContainsDate_setsDateValues(string $input, ?int $min_date_value, ?int $max_date_value): void { $search = new FreshRSS_Search($input); self::assertEquals($min_date_value, $search->getMinDate()); self::assertEquals($max_date_value, $search->getMaxDate()); @@ -145,7 +144,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { /** * @return array<array<mixed>> */ - public function provideDateSearch(): array { + public static function provideDateSearch(): array { return array( array('date:2007-03-01T13:00:00Z/2008-05-11T15:30:00Z', 1172754000, 1210519800), array('date:2007-03-01T13:00:00Z/P1Y2M10DT2H30M', 1172754000, 1210519799), @@ -156,10 +155,8 @@ class SearchTest extends PHPUnit\Framework\TestCase { ); } - /** - * @dataProvider providePubdateSearch - */ - public function test__construct_whenInputContainsPubdate_setsPubdateValues(string $input, ?int $min_pubdate_value, ?int $max_pubdate_value): void { + #[DataProvider('providePubdateSearch')] + public static function test__construct_whenInputContainsPubdate_setsPubdateValues(string $input, ?int $min_pubdate_value, ?int $max_pubdate_value): void { $search = new FreshRSS_Search($input); self::assertEquals($min_pubdate_value, $search->getMinPubdate()); self::assertEquals($max_pubdate_value, $search->getMaxPubdate()); @@ -168,7 +165,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { /** * @return array<array<mixed>> */ - public function providePubdateSearch(): array { + public static function providePubdateSearch(): array { return array( array('pubdate:2007-03-01T13:00:00Z/2008-05-11T15:30:00Z', 1172754000, 1210519800), array('pubdate:2007-03-01T13:00:00Z/P1Y2M10DT2H30M', 1172754000, 1210519799), @@ -180,11 +177,11 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideTagsSearch * @param array<string>|null $tags_value * @param array<string>|null $search_value */ - public function test__construct_whenInputContainsTags_setsTagsValue(string $input, ?array $tags_value, ?array $search_value): void { + #[DataProvider('provideTagsSearch')] + public static function test__construct_whenInputContainsTags_setsTagsValue(string $input, ?array $tags_value, ?array $search_value): void { $search = new FreshRSS_Search($input); self::assertEquals($tags_value, $search->getTags()); self::assertEquals($search_value, $search->getSearch()); @@ -193,7 +190,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { /** * @return array<array<string|array<string>|null>> */ - public function provideTagsSearch(): array { + public static function provideTagsSearch(): array { return [ ['#word1', ['word1'], null], ['# word1', null, ['#', 'word1']], @@ -207,14 +204,14 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideMultipleSearch * @param array<string>|null $author_value * @param array<string> $intitle_value * @param array<string>|null $inurl_value * @param array<string>|null $tags_value * @param array<string>|null $search_value */ - public function test__construct_whenInputContainsMultipleKeywords_setsValues(string $input, ?array $author_value, ?int $min_date_value, + #[DataProvider('provideMultipleSearch')] + public static function test__construct_whenInputContainsMultipleKeywords_setsValues(string $input, ?array $author_value, ?int $min_date_value, ?int $max_date_value, ?array $intitle_value, ?array $inurl_value, ?int $min_pubdate_value, ?int $max_pubdate_value, ?array $tags_value, ?array $search_value): void { $search = new FreshRSS_Search($input); @@ -231,7 +228,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** @return array<array<mixed>> */ - public function provideMultipleSearch(): array { + public static function provideMultipleSearch(): array { return array( array( 'author:word1 date:2007-03-01/2008-05-11 intitle:word2 inurl:word3 pubdate:2007-03-01/2008-05-11 #word4 #word5', @@ -284,15 +281,13 @@ class SearchTest extends PHPUnit\Framework\TestCase { ); } - /** - * @dataProvider provideAddOrParentheses - */ - public function test__addOrParentheses(string $input, string $output): void { + #[DataProvider('provideAddOrParentheses')] + public static function test__addOrParentheses(string $input, string $output): void { self::assertEquals($output, FreshRSS_BooleanSearch::addOrParentheses($input)); } /** @return array<array{string,string}> */ - public function provideAddOrParentheses(): array { + public static function provideAddOrParentheses(): array { return [ ['ab', 'ab'], ['ab cd', 'ab cd'], @@ -304,15 +299,13 @@ class SearchTest extends PHPUnit\Framework\TestCase { ]; } - /** - * @dataProvider provideconsistentOrParentheses - */ - public function test__consistentOrParentheses(string $input, string $output): void { + #[DataProvider('provideconsistentOrParentheses')] + public static function test__consistentOrParentheses(string $input, string $output): void { self::assertEquals($output, FreshRSS_BooleanSearch::consistentOrParentheses($input)); } /** @return array<array{string,string}> */ - public function provideconsistentOrParentheses(): array { + public static function provideconsistentOrParentheses(): array { return [ ['ab cd ef', 'ab cd ef'], ['(ab cd ef)', '(ab cd ef)'], @@ -332,9 +325,9 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideParentheses * @param array<string> $values */ + #[DataProvider('provideParentheses')] public function test__parentheses(string $input, string $sql, array $values): void { [$filterValues, $filterSearch] = FreshRSS_EntryDAOPGSQL::sqlBooleanSearch('e.', new FreshRSS_BooleanSearch($input)); self::assertEquals(trim($sql), trim($filterSearch)); @@ -342,7 +335,7 @@ class SearchTest extends PHPUnit\Framework\TestCase { } /** @return array<array<mixed>> */ - public function provideParentheses(): array { + public static function provideParentheses(): array { return [ [ 'f:1 (f:2 OR f:3 OR f:4) (f:5 OR (f:6 OR f:7))', diff --git a/tests/app/Models/UserQueryTest.php b/tests/app/Models/UserQueryTest.php index 828bd4276..f9577e49b 100644 --- a/tests/app/Models/UserQueryTest.php +++ b/tests/app/Models/UserQueryTest.php @@ -6,13 +6,13 @@ declare(strict_types=1); */ class UserQueryTest extends PHPUnit\Framework\TestCase { - public function test__construct_whenAllQuery_storesAllParameters(): void { + public static function test__construct_whenAllQuery_storesAllParameters(): void { $query = array('get' => 'a'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEquals('all', $user_query->getGetType()); } - public function test__construct_whenFavoriteQuery_storesFavoriteParameters(): void { + public static function test__construct_whenFavoriteQuery_storesFavoriteParameters(): void { $query = array('get' => 's'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEquals('favorite', $user_query->getGetType()); @@ -56,47 +56,47 @@ class UserQueryTest extends PHPUnit\Framework\TestCase { self::assertEquals('feed', $user_query->getGetType()); } - public function test__construct_whenUnknownQuery_doesStoreParameters(): void { + public static function test__construct_whenUnknownQuery_doesStoreParameters(): void { $query = array('get' => 'q'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEmpty($user_query->getGetName()); self::assertEmpty($user_query->getGetType()); } - public function test__construct_whenName_storesName(): void { + public static function test__construct_whenName_storesName(): void { $name = 'some name'; $query = array('name' => $name); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEquals($name, $user_query->getName()); } - public function test__construct_whenOrder_storesOrder(): void { + public static function test__construct_whenOrder_storesOrder(): void { $order = 'some order'; $query = array('order' => $order); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEquals($order, $user_query->getOrder()); } - public function test__construct_whenState_storesState(): void { + public static function test__construct_whenState_storesState(): void { $state = FreshRSS_Entry::STATE_NOT_READ | FreshRSS_Entry::STATE_FAVORITE; $query = array('state' => $state); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEquals($state, $user_query->getState()); } - public function test__construct_whenUrl_storesUrl(): void { + public static function test__construct_whenUrl_storesUrl(): void { $url = 'some url'; $query = array('url' => $url); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertEquals($url, $user_query->getUrl()); } - public function testToArray_whenNoData_returnsEmptyArray(): void { + public static function testToArray_whenNoData_returnsEmptyArray(): void { $user_query = new FreshRSS_UserQuery([], [], []); self::assertCount(0, $user_query->toArray()); } - public function testToArray_whenData_returnsArray(): void { + public static function testToArray_whenData_returnsArray(): void { $query = array( 'get' => 's', 'name' => 'some name', @@ -110,7 +110,7 @@ class UserQueryTest extends PHPUnit\Framework\TestCase { self::assertEquals($query, $user_query->toArray()); } - public function testHasSearch_whenSearch_returnsTrue(): void { + public static function testHasSearch_whenSearch_returnsTrue(): void { $query = array( 'search' => 'some search', ); @@ -118,24 +118,24 @@ class UserQueryTest extends PHPUnit\Framework\TestCase { self::assertTrue($user_query->hasSearch()); } - public function testHasSearch_whenNoSearch_returnsFalse(): void { + public static function testHasSearch_whenNoSearch_returnsFalse(): void { $user_query = new FreshRSS_UserQuery([], [], []); self::assertFalse($user_query->hasSearch()); } - public function testHasParameters_whenAllQuery_returnsFalse(): void { + public static function testHasParameters_whenAllQuery_returnsFalse(): void { $query = array('get' => 'a'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertFalse($user_query->hasParameters()); } - public function testHasParameters_whenNoParameter_returnsFalse(): void { + public static function testHasParameters_whenNoParameter_returnsFalse(): void { $query = array(); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertFalse($user_query->hasParameters()); } - public function testHasParameters_whenParameter_returnTrue(): void { + public static function testHasParameters_whenParameter_returnTrue(): void { $query = array('get' => 's'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertTrue($user_query->hasParameters()); @@ -153,7 +153,7 @@ class UserQueryTest extends PHPUnit\Framework\TestCase { self::assertFalse($user_query->isDeprecated()); } - public function testIsDeprecated_whenCategoryDoesNotExist_returnTrue(): void { + public static function testIsDeprecated_whenCategoryDoesNotExist_returnTrue(): void { $query = array('get' => 'c_1'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertTrue($user_query->isDeprecated()); @@ -193,19 +193,19 @@ class UserQueryTest extends PHPUnit\Framework\TestCase { self::assertTrue($user_query->isDeprecated()); } - public function testIsDeprecated_whenAllQuery_returnFalse(): void { + public static function testIsDeprecated_whenAllQuery_returnFalse(): void { $query = array('get' => 'a'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertFalse($user_query->isDeprecated()); } - public function testIsDeprecated_whenFavoriteQuery_returnFalse(): void { + public static function testIsDeprecated_whenFavoriteQuery_returnFalse(): void { $query = array('get' => 's'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertFalse($user_query->isDeprecated()); } - public function testIsDeprecated_whenUnknownQuery_returnFalse(): void { + public static function testIsDeprecated_whenUnknownQuery_returnFalse(): void { $query = array('get' => 'q'); $user_query = new FreshRSS_UserQuery($query, [], []); self::assertFalse($user_query->isDeprecated()); diff --git a/tests/app/Utils/dotNotationUtilTest.php b/tests/app/Utils/dotNotationUtilTest.php index a04ddba4f..e49220d30 100644 --- a/tests/app/Utils/dotNotationUtilTest.php +++ b/tests/app/Utils/dotNotationUtilTest.php @@ -1,12 +1,14 @@ <?php declare(strict_types=1); +use PHPUnit\Framework\Attributes\DataProvider; + class dotNotationUtilTest extends PHPUnit\Framework\TestCase { /** * @return Traversable<array{array<string,mixed>,string,string}> */ - public function provideJsonDots(): Traversable { + public static function provideJsonDots(): Traversable { $json = <<<json { "hello": "world", @@ -34,10 +36,10 @@ class dotNotationUtilTest extends PHPUnit\Framework\TestCase { } /** - * @dataProvider provideJsonDots * @param array<string,mixed> $array */ - public function testJsonDots(array $array, string $key, string $expected): void { + #[DataProvider('provideJsonDots')] + public static function testJsonDots(array $array, string $key, string $expected): void { $value = FreshRSS_dotNotation_Util::get($array, $key); self::assertEquals($expected, $value); } diff --git a/tests/cli/CliOptionsParserTest.php b/tests/cli/CliOptionsParserTest.php index facb5dbc5..046617721 100644 --- a/tests/cli/CliOptionsParserTest.php +++ b/tests/cli/CliOptionsParserTest.php @@ -52,163 +52,138 @@ final class CliOptionsOptionalAndRequiredTest extends CliOptionsParser { class CliOptionsParserTest extends TestCase { - public function testInvalidOptionSetWithValueReturnsError(): void { - $result = $this->runOptionalOptions('--invalid=invalid'); - + public static function testInvalidOptionSetWithValueReturnsError(): void { + $result = self::runOptionalOptions('--invalid=invalid'); self::assertEquals(['invalid' => 'unknown option: invalid'], $result->errors); } - public function testInvalidOptionSetWithoutValueReturnsError(): void { - $result = $this->runOptionalOptions('--invalid'); - + public static function testInvalidOptionSetWithoutValueReturnsError(): void { + $result = self::runOptionalOptions('--invalid'); self::assertEquals(['invalid' => 'unknown option: invalid'], $result->errors); } - public function testValidOptionSetWithValidValueAndInvalidOptionSetWithValueReturnsValueForValidOptionAndErrorForInvalidOption(): void { - $result = $this->runOptionalOptions('--string=string --invalid=invalid'); - + public static function testValidOptionSetWithValidValueAndInvalidOptionSetWithValueReturnsValueForValidOptionAndErrorForInvalidOption(): void { + $result = self::runOptionalOptions('--string=string --invalid=invalid'); self::assertEquals('string', $result->string); self::assertEquals(['invalid' => 'unknown option: invalid'], $result->errors); } - public function testOptionWithValueTypeOfStringSetOnceWithValidValueReturnsValueAsString(): void { - $result = $this->runOptionalOptions('--string=string'); - + public static function testOptionWithValueTypeOfStringSetOnceWithValidValueReturnsValueAsString(): void { + $result = self::runOptionalOptions('--string=string'); self::assertEquals('string', $result->string); } - public function testOptionWithRequiredValueTypeOfIntSetOnceWithValidValueReturnsValueAsInt(): void { - $result = $this->runOptionalOptions('--int=111'); - + public static function testOptionWithRequiredValueTypeOfIntSetOnceWithValidValueReturnsValueAsInt(): void { + $result = self::runOptionalOptions('--int=111'); self::assertEquals(111, $result->int); } - public function testOptionWithRequiredValueTypeOfBoolSetOnceWithValidValueReturnsValueAsBool(): void { - $result = $this->runOptionalOptions('--bool=on'); - + public static function testOptionWithRequiredValueTypeOfBoolSetOnceWithValidValueReturnsValueAsBool(): void { + $result = self::runOptionalOptions('--bool=on'); self::assertEquals(true, $result->bool); } - public function testOptionWithValueTypeOfArrayOfStringSetOnceWithValidValueReturnsValueAsArrayOfString(): void { - $result = $this->runOptionalOptions('--array-of-string=string'); - + public static function testOptionWithValueTypeOfArrayOfStringSetOnceWithValidValueReturnsValueAsArrayOfString(): void { + $result = self::runOptionalOptions('--array-of-string=string'); self::assertEquals(['string'], $result->arrayOfString); } - public function testOptionWithValueTypeOfStringSetMultipleTimesWithValidValueReturnsLastValueSetAsString(): void { - $result = $this->runOptionalOptions('--string=first --string=second'); - + public static function testOptionWithValueTypeOfStringSetMultipleTimesWithValidValueReturnsLastValueSetAsString(): void { + $result = self::runOptionalOptions('--string=first --string=second'); self::assertEquals('second', $result->string); } - public function testOptionWithValueTypeOfIntSetMultipleTimesWithValidValueReturnsLastValueSetAsInt(): void { - $result = $this->runOptionalOptions('--int=111 --int=222'); - + public static function testOptionWithValueTypeOfIntSetMultipleTimesWithValidValueReturnsLastValueSetAsInt(): void { + $result = self::runOptionalOptions('--int=111 --int=222'); self::assertEquals(222, $result->int); } - public function testOptionWithValueTypeOfBoolSetMultipleTimesWithValidValueReturnsLastValueSetAsBool(): void { - $result = $this->runOptionalOptions('--bool=on --bool=off'); - + public static function testOptionWithValueTypeOfBoolSetMultipleTimesWithValidValueReturnsLastValueSetAsBool(): void { + $result = self::runOptionalOptions('--bool=on --bool=off'); self::assertEquals(false, $result->bool); } - public function testOptionWithValueTypeOfArrayOfStringSetMultipleTimesWithValidValueReturnsAllSetValuesAsArrayOfString(): void { - $result = $this->runOptionalOptions('--array-of-string=first --array-of-string=second'); - + public static function testOptionWithValueTypeOfArrayOfStringSetMultipleTimesWithValidValueReturnsAllSetValuesAsArrayOfString(): void { + $result = self::runOptionalOptions('--array-of-string=first --array-of-string=second'); self::assertEquals(['first', 'second'], $result->arrayOfString); } - public function testOptionWithValueTypeOfIntSetWithInvalidValueReturnsAnError(): void { - $result = $this->runOptionalOptions('--int=one'); - + public static function testOptionWithValueTypeOfIntSetWithInvalidValueReturnsAnError(): void { + $result = self::runOptionalOptions('--int=one'); self::assertEquals(['int' => 'invalid input: int must be an integer'], $result->errors); } - public function testOptionWithValueTypeOfBoolSetWithInvalidValuesReturnsAnError(): void { - $result = $this->runOptionalOptions('--bool=bad'); - + public static function testOptionWithValueTypeOfBoolSetWithInvalidValuesReturnsAnError(): void { + $result = self::runOptionalOptions('--bool=bad'); self::assertEquals(['bool' => 'invalid input: bool must be a boolean'], $result->errors); } - public function testOptionWithValueTypeOfIntSetMultipleTimesWithValidAndInvalidValuesReturnsLastValidValueSetAsIntAndError(): void { - $result = $this->runOptionalOptions('--int=111 --int=one --int=222 --int=two'); - + public static function testOptionWithValueTypeOfIntSetMultipleTimesWithValidAndInvalidValuesReturnsLastValidValueSetAsIntAndError(): void { + $result = self::runOptionalOptions('--int=111 --int=one --int=222 --int=two'); self::assertEquals(222, $result->int); self::assertEquals(['int' => 'invalid input: int must be an integer'], $result->errors); } - public function testOptionWithValueTypeOfBoolSetMultipleTimesWithWithValidAndInvalidValuesReturnsLastValidValueSetAsBoolAndError(): void { - $result = $this->runOptionalOptions('--bool=on --bool=good --bool=off --bool=bad'); - + public static function testOptionWithValueTypeOfBoolSetMultipleTimesWithWithValidAndInvalidValuesReturnsLastValidValueSetAsBoolAndError(): void { + $result = self::runOptionalOptions('--bool=on --bool=good --bool=off --bool=bad'); self::assertEquals(false, $result->bool); self::assertEquals(['bool' => 'invalid input: bool must be a boolean'], $result->errors); } - public function testNotSetOptionWithDefaultInputReturnsDefaultInput(): void { - $result = $this->runOptionalOptions(''); - + public static function testNotSetOptionWithDefaultInputReturnsDefaultInput(): void { + $result = self::runOptionalOptions(''); self::assertEquals('default', $result->defaultInput); } - public function testOptionWithDefaultInputSetWithValidValueReturnsCorrectlyTypedValue(): void { - $result = $this->runOptionalOptions('--default-input=input'); - + public static function testOptionWithDefaultInputSetWithValidValueReturnsCorrectlyTypedValue(): void { + $result = self::runOptionalOptions('--default-input=input'); self::assertEquals('input', $result->defaultInput); } - public function testOptionWithOptionalValueSetWithoutValueReturnsEmptyString(): void { - $result = $this->runOptionalOptions('--optional-value'); - + public static function testOptionWithOptionalValueSetWithoutValueReturnsEmptyString(): void { + $result = self::runOptionalOptions('--optional-value'); self::assertEquals('', $result->optionalValue); } - public function testOptionWithOptionalValueDefaultSetWithoutValueReturnsOptionalValueDefault(): void { - $result = $this->runOptionalOptions('--optional-value-with-default'); - + public static function testOptionWithOptionalValueDefaultSetWithoutValueReturnsOptionalValueDefault(): void { + $result = self::runOptionalOptions('--optional-value-with-default'); self::assertEquals(true, $result->optionalValueWithDefault); } - public function testNotSetOptionWithOptionalValueDefaultAndDefaultInputReturnsDefaultInput(): void { - $result = $this->runOptionalOptions(''); - + public static function testNotSetOptionWithOptionalValueDefaultAndDefaultInputReturnsDefaultInput(): void { + $result = self::runOptionalOptions(''); self::assertEquals('default', $result->defaultInputAndOptionalValueWithDefault); } - public function testOptionWithOptionalValueDefaultAndDefaultInputSetWithoutValueReturnsOptionalValueDefault(): void { - $result = $this->runOptionalOptions('--default-input-and-optional-value-with-default'); - + public static function testOptionWithOptionalValueDefaultAndDefaultInputSetWithoutValueReturnsOptionalValueDefault(): void { + $result = self::runOptionalOptions('--default-input-and-optional-value-with-default'); self::assertEquals('optional', $result->defaultInputAndOptionalValueWithDefault); } - public function testRequiredOptionNotSetReturnsError(): void { - $result = $this->runOptionalAndRequiredOptions(''); - + public static function testRequiredOptionNotSetReturnsError(): void { + $result = self::runOptionalAndRequiredOptions(''); self::assertEquals(['required' => 'invalid input: required cannot be empty'], $result->errors); } - public function testOptionSetWithDeprecatedAliasGeneratesDeprecationWarningAndReturnsValue(): void { - $result = $this->runCommandReadingStandardError('--deprecated-string=string'); - + public static function testOptionSetWithDeprecatedAliasGeneratesDeprecationWarningAndReturnsValue(): void { + $result = self::runCommandReadingStandardError('--deprecated-string=string'); self::assertEquals('FreshRSS deprecation warning: the CLI option(s): deprecated-string are deprecated ' . 'and will be removed in a future release. Use: string instead', $result ); - $result = $this->runOptionalOptions('--deprecated-string=string'); - + $result = self::runOptionalOptions('--deprecated-string=string'); self::assertEquals('string', $result->string); } - public function testAlwaysReturnUsageMessageWithUsageInfoForAllOptions(): void { - $result = $this->runOptionalAndRequiredOptions(''); - + public static function testAlwaysReturnUsageMessageWithUsageInfoForAllOptions(): void { + $result = self::runOptionalAndRequiredOptions(''); self::assertEquals('Usage: cli-parser-test.php --required=<required> [-s --string=<string>] [-i --int=<int>] [-b --bool=<bool>] [-f --flag]', $result->usage, ); } - private function runOptionalOptions(string $cliOptions = ''): CliOptionsOptionalTest { + private static function runOptionalOptions(string $cliOptions = ''): CliOptionsOptionalTest { $command = __DIR__ . '/cli-parser-test.php'; $className = CliOptionsOptionalTest::class; @@ -219,7 +194,7 @@ class CliOptionsParserTest extends TestCase { return $result; } - private function runOptionalAndRequiredOptions(string $cliOptions = ''): CliOptionsOptionalAndRequiredTest { + private static function runOptionalAndRequiredOptions(string $cliOptions = ''): CliOptionsOptionalAndRequiredTest { $command = __DIR__ . '/cli-parser-test.php'; $className = CliOptionsOptionalAndRequiredTest::class; @@ -230,7 +205,7 @@ class CliOptionsParserTest extends TestCase { return $result; } - private function runCommandReadingStandardError(string $cliOptions = ''): string { + private static function runCommandReadingStandardError(string $cliOptions = ''): string { $command = __DIR__ . '/cli-parser-test.php'; $className = CliOptionsOptionalTest::class; diff --git a/tests/cli/i18n/I18nCompletionValidatorTest.php b/tests/cli/i18n/I18nCompletionValidatorTest.php index bc992edbe..f16285005 100644 --- a/tests/cli/i18n/I18nCompletionValidatorTest.php +++ b/tests/cli/i18n/I18nCompletionValidatorTest.php @@ -42,7 +42,7 @@ class I18nCompletionValidatorTest extends PHPUnit\Framework\TestCase { $validator->displayReport(); } - public function testValidateWhenNoData(): void { + public static function testValidateWhenNoData(): void { $validator = new I18nCompletionValidator([], []); self::assertTrue($validator->validate()); self::assertEquals('', $validator->displayResult()); diff --git a/tests/cli/i18n/I18nUsageValidatorTest.php b/tests/cli/i18n/I18nUsageValidatorTest.php index 3135cef22..1c604390f 100644 --- a/tests/cli/i18n/I18nUsageValidatorTest.php +++ b/tests/cli/i18n/I18nUsageValidatorTest.php @@ -42,7 +42,7 @@ class I18nUsageValidatorTest extends PHPUnit\Framework\TestCase { $validator->displayReport(); } - public function testValidateWhenNoData(): void { + public static function testValidateWhenNoData(): void { $validator = new I18nUsageValidator([], []); self::assertTrue($validator->validate()); self::assertEquals('', $validator->displayResult()); diff --git a/tests/cli/i18n/I18nValueTest.php b/tests/cli/i18n/I18nValueTest.php index 06d57eb08..44984d7b2 100644 --- a/tests/cli/i18n/I18nValueTest.php +++ b/tests/cli/i18n/I18nValueTest.php @@ -3,35 +3,35 @@ declare(strict_types=1); require_once __DIR__ . '/../../../cli/i18n/I18nValue.php'; class I18nValueTest extends PHPUnit\Framework\TestCase { - public function testConstructorWithoutState(): void { + public static function testConstructorWithoutState(): void { $value = new I18nValue('some value'); self::assertEquals('some value', $value->getValue()); self::assertFalse($value->isIgnore()); self::assertFalse($value->isTodo()); } - public function testConstructorWithUnknownState(): void { + public static function testConstructorWithUnknownState(): void { $value = new I18nValue('some value -> unknown'); self::assertEquals('some value', $value->getValue()); self::assertFalse($value->isIgnore()); self::assertFalse($value->isTodo()); } - public function testConstructorWithTodoState(): void { + public static function testConstructorWithTodoState(): void { $value = new I18nValue('some value -> todo'); self::assertEquals('some value', $value->getValue()); self::assertFalse($value->isIgnore()); self::assertTrue($value->isTodo()); } - public function testConstructorWithIgnoreState(): void { + public static function testConstructorWithIgnoreState(): void { $value = new I18nValue('some value -> ignore'); self::assertEquals('some value', $value->getValue()); self::assertTrue($value->isIgnore()); self::assertFalse($value->isTodo()); } - public function testClone(): void { + public static function testClone(): void { $value = new I18nValue('some value'); $clonedValue = clone $value; self::assertEquals('some value', $value->getValue()); @@ -42,21 +42,21 @@ class I18nValueTest extends PHPUnit\Framework\TestCase { self::assertTrue($clonedValue->isTodo()); } - public function testEqualWhenValueIsIdentical(): void { + public static function testEqualWhenValueIsIdentical(): void { $value = new I18nValue('some value'); $clonedValue = clone $value; self::assertTrue($value->equal($clonedValue)); self::assertTrue($clonedValue->equal($value)); } - public function testEqualWhenValueIsDifferent(): void { + public static function testEqualWhenValueIsDifferent(): void { $value = new I18nValue('some value'); $otherValue = new I18nValue('some other value'); self::assertFalse($value->equal($otherValue)); self::assertFalse($otherValue->equal($value)); } - public function testStates(): void { + public static function testStates(): void { $reflectionProperty = new ReflectionProperty(I18nValue::class, 'state'); $reflectionProperty->setAccessible(true); @@ -74,7 +74,7 @@ class I18nValueTest extends PHPUnit\Framework\TestCase { self::assertEquals('todo', $reflectionProperty->getValue($value)); } - public function testToString(): void { + public static function testToString(): void { $value = new I18nValue('some value'); self::assertEquals('some value', $value->__toString()); $value->markAsTodo(); diff --git a/tests/lib/CssXPath/CssXPathTest.php b/tests/lib/CssXPath/CssXPathTest.php index ed92ece16..8197f5b87 100644 --- a/tests/lib/CssXPath/CssXPathTest.php +++ b/tests/lib/CssXPath/CssXPathTest.php @@ -3,7 +3,7 @@ declare(strict_types=1); class CssXPathTest extends PHPUnit\Framework\TestCase { - public function testCssXPathTranslatorClassExists(): void { + public static function testCssXPathTranslatorClassExists(): void { self::assertTrue(class_exists('Gt\\CssXPath\\Translator')); } } diff --git a/tests/lib/Minz/MigratorTest.php b/tests/lib/Minz/MigratorTest.php index 6560715da..75c6eee23 100644 --- a/tests/lib/Minz/MigratorTest.php +++ b/tests/lib/Minz/MigratorTest.php @@ -4,7 +4,7 @@ use PHPUnit\Framework\TestCase; class MigratorTest extends TestCase { - public function testAddMigration(): void { + public static function testAddMigration(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('foo', fn() => true); @@ -15,7 +15,7 @@ class MigratorTest extends TestCase self::assertTrue($result); } - public function testMigrationsIsSorted(): void { + public static function testMigrationsIsSorted(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('2_foo', fn() => true); $migrator->addMigration('10_foo', fn() => true); @@ -27,7 +27,7 @@ class MigratorTest extends TestCase self::assertSame($expected_versions, array_keys($migrations)); } - public function testSetAppliedVersions(): void { + public static function testSetAppliedVersions(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('foo', fn() => true); @@ -36,7 +36,7 @@ class MigratorTest extends TestCase self::assertSame(['foo'], $migrator->appliedVersions()); } - public function testSetAppliedVersionsTrimArgument(): void { + public static function testSetAppliedVersionsTrimArgument(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('foo', fn() => true); @@ -54,7 +54,7 @@ class MigratorTest extends TestCase $migrator->setAppliedVersions(['foo']); } - public function testVersions(): void { + public static function testVersions(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('foo', fn() => true); $migrator->addMigration('bar', fn() => true); @@ -64,7 +64,7 @@ class MigratorTest extends TestCase self::assertSame(['bar', 'foo'], $versions); } - public function testMigrate(): void { + public static function testMigrate(): void { $migrator = new Minz_Migrator(); $spy = false; $migrator->addMigration('foo', function () use (&$spy) { @@ -82,7 +82,7 @@ class MigratorTest extends TestCase ], $result); } - public function testMigrateCallsMigrationsInSortedOrder(): void { + public static function testMigrateCallsMigrationsInSortedOrder(): void { $migrator = new Minz_Migrator(); $spy_foo_1_is_called = false; $migrator->addMigration('2_foo', function () use (&$spy_foo_1_is_called) { @@ -102,7 +102,7 @@ class MigratorTest extends TestCase ], $result); } - public function testMigrateDoesNotCallAppliedMigrations(): void { + public static function testMigrateDoesNotCallAppliedMigrations(): void { $migrator = new Minz_Migrator(); $spy = false; $migrator->addMigration('1_foo', function () use (&$spy) { @@ -117,7 +117,7 @@ class MigratorTest extends TestCase self::assertSame([], $result); } - public function testMigrateCallNonAppliedBetweenTwoApplied(): void { + public static function testMigrateCallNonAppliedBetweenTwoApplied(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('1_foo', fn() => true); $migrator->addMigration('2_foo', fn() => true); @@ -132,7 +132,7 @@ class MigratorTest extends TestCase ], $result); } - public function testMigrateWithMigrationReturningFalseDoesNotApplyVersion(): void { + public static function testMigrateWithMigrationReturningFalseDoesNotApplyVersion(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('1_foo', fn() => true); $migrator->addMigration('2_foo', fn() => false); @@ -146,7 +146,7 @@ class MigratorTest extends TestCase ], $result); } - public function testMigrateWithMigrationReturningFalseDoesNotExecuteNextMigrations(): void { + public static function testMigrateWithMigrationReturningFalseDoesNotExecuteNextMigrations(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('1_foo', fn() => false); $spy = false; @@ -164,7 +164,7 @@ class MigratorTest extends TestCase ], $result); } - public function testMigrateWithFailingMigration(): void { + public static function testMigrateWithFailingMigration(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('foo', function () { throw new \Exception('Oops, it failed.'); @@ -178,7 +178,7 @@ class MigratorTest extends TestCase ], $result); } - public function testUpToDate(): void { + public static function testUpToDate(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('foo', fn() => true); $migrator->setAppliedVersions(['foo']); @@ -188,7 +188,7 @@ class MigratorTest extends TestCase self::assertTrue($upToDate); } - public function testUpToDateIfRemainingMigration(): void { + public static function testUpToDateIfRemainingMigration(): void { $migrator = new Minz_Migrator(); $migrator->addMigration('1_foo', fn() => true); $migrator->addMigration('2_foo', fn() => true); @@ -199,7 +199,7 @@ class MigratorTest extends TestCase self::assertFalse($upToDate); } - public function testUpToDateIfNoMigrations(): void { + public static function testUpToDateIfNoMigrations(): void { $migrator = new Minz_Migrator(); $upToDate = $migrator->upToDate(); @@ -207,7 +207,7 @@ class MigratorTest extends TestCase self::assertTrue($upToDate); } - public function testConstructorLoadsDirectory(): void { + public static function testConstructorLoadsDirectory(): void { $migrations_path = TESTS_PATH . '/fixtures/migrations/'; $migrator = new Minz_Migrator($migrations_path); $expected_versions = ['2019_12_22_FooBar', '2019_12_23_Baz']; @@ -217,7 +217,7 @@ class MigratorTest extends TestCase self::assertSame($expected_versions, array_keys($migrations)); } - public function testExecute(): void { + public static function testExecute(): void { $migrations_path = TESTS_PATH . '/fixtures/migrations/'; $applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt'); self::assertIsString($applied_migrations_path); @@ -229,7 +229,7 @@ class MigratorTest extends TestCase @unlink($applied_migrations_path); } - public function testExecuteWithAlreadyAppliedMigration(): void { + public static function testExecuteWithAlreadyAppliedMigration(): void { $migrations_path = TESTS_PATH . '/fixtures/migrations/'; $applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt'); self::assertIsString($applied_migrations_path); @@ -243,7 +243,7 @@ class MigratorTest extends TestCase @unlink($applied_migrations_path); } - public function testExecuteWithAppliedMigrationInDifferentOrder(): void { + public static function testExecuteWithAppliedMigrationInDifferentOrder(): void { $migrations_path = TESTS_PATH . '/fixtures/migrations/'; $applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt'); self::assertIsString($applied_migrations_path); @@ -258,7 +258,7 @@ class MigratorTest extends TestCase @unlink($applied_migrations_path); } - public function testExecuteFailsIfVersionPathDoesNotExist(): void { + public static function testExecuteFailsIfVersionPathDoesNotExist(): void { $migrations_path = TESTS_PATH . '/fixtures/migrations/'; $applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt'); $expected_result = "Cannot open the {$applied_migrations_path} file"; @@ -270,7 +270,7 @@ class MigratorTest extends TestCase @unlink($applied_migrations_path); } - public function testExecuteFailsIfAMigrationIsFailing(): void { + public static function testExecuteFailsIfAMigrationIsFailing(): void { $migrations_path = TESTS_PATH . '/fixtures/migrations_with_failing/'; $applied_migrations_path = tempnam('/tmp', 'applied_migrations.txt'); $expected_result = 'A migration failed to be applied, please see previous logs.'; diff --git a/tests/lib/PHPMailer/PHPMailerTest.php b/tests/lib/PHPMailer/PHPMailerTest.php index bb08deaa8..8bc8378b6 100644 --- a/tests/lib/PHPMailer/PHPMailerTest.php +++ b/tests/lib/PHPMailer/PHPMailerTest.php @@ -5,7 +5,7 @@ use PHPMailer\PHPMailer\PHPMailer; class PHPMailerTest extends PHPUnit\Framework\TestCase { - public function testPHPMailerClassExists(): void { + public static function testPHPMailerClassExists(): void { self::assertTrue(class_exists(PHPMailer::class)); } } |
