From ea132b1772c3556372a74f1c7d6f08f0087dbe0d Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:35:29 -0700 Subject: [PATCH 01/15] Update all the things --- composer.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 565372a..f463b14 100644 --- a/composer.json +++ b/composer.json @@ -22,13 +22,13 @@ "sort-packages": true }, "require": { - "php": "^8.0" + "php": "^8.2" }, "require-dev": { - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.3 || ^9", - "squizlabs/php_codesniffer": "^3.6" + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^11.0 || ^12.0 || ^13.0", + "squizlabs/php_codesniffer": "^4.0" }, "scripts": { "test": [ From 7e2fccdde96a20b876e44a9ebed34964ed17bfe8 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:36:38 -0700 Subject: [PATCH 02/15] Update phpunit config --- phpunit.xml | 22 ---------------------- phpunit.xml.dist | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 22 deletions(-) delete mode 100644 phpunit.xml create mode 100644 phpunit.xml.dist diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index fc0cfc4..0000000 --- a/phpunit.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - tests - - - - - src - - - - - - diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..68f2d65 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,24 @@ + + + + + tests + + + + + + src + + + From ab6e5c7bfd8d77425f28ca69fdfad8d1412125f2 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:37:02 -0700 Subject: [PATCH 03/15] Update gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a6804c8..fd9667e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ /build/ /vendor/ composer.lock -.phpunit.result.cache +.phpunit.cache From ecfe020bfad587339f8fe39d224b1a04774bca45 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:40:20 -0700 Subject: [PATCH 04/15] Convert PHPUnit annotations to attributes Co-Authored-By: Claude Opus 4.5 --- tests/Containers/ParsedInputTest.php | 17 ++++++------- tests/Containers/RawInputTest.php | 11 +++++---- tests/Containers/SafeInputTest.php | 10 ++++---- tests/Exceptions/InputExceptionTest.php | 27 ++++++++------------- tests/Objects/InputObjectTest.php | 8 +++---- tests/Parsers/JSONTest.php | 32 +++++++++++-------------- tests/Parsers/URLEncodedTest.php | 26 ++++++++++---------- 7 files changed, 62 insertions(+), 69 deletions(-) diff --git a/tests/Containers/ParsedInputTest.php b/tests/Containers/ParsedInputTest.php index 93b1339..408750f 100644 --- a/tests/Containers/ParsedInputTest.php +++ b/tests/Containers/ParsedInputTest.php @@ -1,5 +1,7 @@ getConstants(); @@ -28,9 +29,7 @@ public function constants(): array return $out; } - /** - * @dataProvider constants - */ + #[DataProvider('constants')] public function testConstruct(int $constant, string $name): void { $this->assertInstanceOf( @@ -49,9 +48,7 @@ public function testInvalidConstructWithInt(): void } } - /** - * @dataProvider constants - */ + #[DataProvider('constants')] public function testGetInvalid(int $constant): void { $ex = new InputException($constant, ['foo']); @@ -62,9 +59,7 @@ public function testGetInvalid(int $constant): void } } - /** - * @dataProvider constants - */ + #[DataProvider('constants')] public function testGetMissing(int $constant): void { $ex = new InputException($constant, ['foo']); @@ -75,9 +70,7 @@ public function testGetMissing(int $constant): void } } - /** - * @dataProvider constants - */ + #[DataProvider('constants')] public function testGetUnexpected(int $constant): void { $ex = new InputException($constant, ['foo']); diff --git a/tests/Objects/InputObjectTest.php b/tests/Objects/InputObjectTest.php index a0d9098..55b3183 100644 --- a/tests/Objects/InputObjectTest.php +++ b/tests/Objects/InputObjectTest.php @@ -6,12 +6,12 @@ use BadMethodCallException; use Error; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\TestCase; use UnexpectedValueException; -/** - * @covers Firehed\Input\Objects\InputObject - */ -class InputObjectTest extends \PHPUnit\Framework\TestCase +#[CoversClass(InputObject::class)] +class InputObjectTest extends TestCase { private InputObject $io; diff --git a/tests/Parsers/JSONTest.php b/tests/Parsers/JSONTest.php index 516b837..9f86abe 100644 --- a/tests/Parsers/JSONTest.php +++ b/tests/Parsers/JSONTest.php @@ -1,18 +1,21 @@ parse($json); } - /** - * @dataProvider formatErrors - */ + #[DataProvider('formatErrors')] public function testFormatError(string $json): void { $parser = new JSON(); diff --git a/tests/Parsers/URLEncodedTest.php b/tests/Parsers/URLEncodedTest.php index a9d5936..b5389b2 100644 --- a/tests/Parsers/URLEncodedTest.php +++ b/tests/Parsers/URLEncodedTest.php @@ -1,18 +1,21 @@ 'bar']], @@ -25,18 +28,15 @@ public function validURLEncoded(): array /** * @return string[][] */ - public function formatErrors(): array + public static function formatErrors(): array { return [ ['&'], ]; } - /** - * @dataProvider validURLEncoded - * @param mixed $expected - */ - public function testParse(string $data, $expected): void + #[DataProvider('validURLEncoded')] + public function testParse(string $data, mixed $expected): void { $parser = new URLEncoded(); @@ -49,9 +49,7 @@ public function testParse(string $data, $expected): void ); } - /** - * @dataProvider formatErrors - */ + #[DataProvider('formatErrors')] public function testFormatError(string $data): void { $parser = new URLEncoded(); From 28939854622738324da75b6320c023457b113dfe Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:41:39 -0700 Subject: [PATCH 05/15] Replace ->will($this->returnValue()) with ->willReturn() Co-Authored-By: Claude Opus 4.5 --- tests/Containers/ParsedInputTest.php | 6 +++--- tests/Containers/RawInputTest.php | 2 +- tests/Containers/SafeInputTest.php | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/Containers/ParsedInputTest.php b/tests/Containers/ParsedInputTest.php index 408750f..1fd014a 100644 --- a/tests/Containers/ParsedInputTest.php +++ b/tests/Containers/ParsedInputTest.php @@ -362,11 +362,11 @@ private function getValidation(): ValidationInterface $validation = $this->createMock(ValidationInterface::class); $validation->expects($this->atLeastOnce()) ->method('getRequiredInputs') - ->will($this->returnValue($this->required)); + ->willReturn($this->required); $validation->expects($this->atLeastOnce()) ->method('getOptionalInputs') - ->will($this->returnValue($this->optional)); + ->willReturn($this->optional); return $validation; } @@ -394,7 +394,7 @@ private function getMockIO(bool $valid, $ret = null): InputObject if ($valid) { $mock->expects($this->atLeastOnce()) ->method('evaluate') - ->will($this->returnValue($ret)); + ->willReturn($ret); } else { $mock->expects($this->atLeastOnce()) ->method('evaluate') diff --git a/tests/Containers/RawInputTest.php b/tests/Containers/RawInputTest.php index c2e1b2a..1e53773 100644 --- a/tests/Containers/RawInputTest.php +++ b/tests/Containers/RawInputTest.php @@ -27,7 +27,7 @@ public function testParse(): void $mock->expects($this->once()) ->method('parse') ->with($raw_data) - ->will($this->returnValue((array)$raw_data)); + ->willReturn((array)$raw_data); $raw = new RawInput($raw_data); $parsed = $raw->parse($mock); $this->assertInstanceOf( diff --git a/tests/Containers/SafeInputTest.php b/tests/Containers/SafeInputTest.php index 92d3365..e23163d 100644 --- a/tests/Containers/SafeInputTest.php +++ b/tests/Containers/SafeInputTest.php @@ -22,10 +22,10 @@ private function getSafeInput(array $data): SafeInput ->getMock(); $mock->expects($this->any()) ->method('getData') - ->will($this->returnValue($data)); + ->willReturn($data); $mock->expects($this->any()) ->method('isValidated') - ->will($this->returnValue(true)); + ->willReturn(true); return new SafeInput($mock); } @@ -41,7 +41,7 @@ public function testConstructThrowsWithUnvalidatedInput(): void ->getMock(); $valid->expects($this->atLeastOnce()) ->method('isValidated') - ->will($this->returnValue(false)); + ->willReturn(false); $this->expectException(BadMethodCallException::class); new SafeInput($valid); } From 97b88a4f0bf196fa03b894d8578a2d1c0cefc4ce Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:42:11 -0700 Subject: [PATCH 06/15] Replace ->will($this->throwException()) with ->willThrowException() Co-Authored-By: Claude Opus 4.5 --- tests/Containers/ParsedInputTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Containers/ParsedInputTest.php b/tests/Containers/ParsedInputTest.php index 1fd014a..15dd721 100644 --- a/tests/Containers/ParsedInputTest.php +++ b/tests/Containers/ParsedInputTest.php @@ -245,7 +245,7 @@ public function testValidateHandlesInputExceptions( $io = $this->createMock(InputObject::class); $io->expects($this->atLeastOnce()) ->method('evaluate') - ->will($this->throwException($ex)); + ->willThrowException($ex); if ($required) { $this->addRequired('struct', $io); $msg = 'Required:'; @@ -398,7 +398,7 @@ private function getMockIO(bool $valid, $ret = null): InputObject } else { $mock->expects($this->atLeastOnce()) ->method('evaluate') - ->will($this->throwException(new UnexpectedValueException())); + ->willThrowException(new UnexpectedValueException()); } return $mock; } From c5e47dd52f9412945bd0c8aa83567ebf24a2aab2 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:43:45 -0700 Subject: [PATCH 07/15] Add missing data provider argument to test methods Co-Authored-By: Claude Opus 4.5 --- tests/Exceptions/InputExceptionTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Exceptions/InputExceptionTest.php b/tests/Exceptions/InputExceptionTest.php index ea1fd50..d2f57d0 100644 --- a/tests/Exceptions/InputExceptionTest.php +++ b/tests/Exceptions/InputExceptionTest.php @@ -49,7 +49,7 @@ public function testInvalidConstructWithInt(): void } #[DataProvider('constants')] - public function testGetInvalid(int $constant): void + public function testGetInvalid(int $constant, string $name): void { $ex = new InputException($constant, ['foo']); if ($constant === InputException::INVALID_VALUES) { @@ -60,7 +60,7 @@ public function testGetInvalid(int $constant): void } #[DataProvider('constants')] - public function testGetMissing(int $constant): void + public function testGetMissing(int $constant, string $name): void { $ex = new InputException($constant, ['foo']); if ($constant === InputException::MISSING_VALUES) { @@ -71,7 +71,7 @@ public function testGetMissing(int $constant): void } #[DataProvider('constants')] - public function testGetUnexpected(int $constant): void + public function testGetUnexpected(int $constant, string $name): void { $ex = new InputException($constant, ['foo']); if ($constant === InputException::UNEXPECTED_VALUES) { From 9268a53bb86fe203e98796b64ca8b6b61ed840ce Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:44:44 -0700 Subject: [PATCH 08/15] Add return types --- src/Containers/ParsedInput.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Containers/ParsedInput.php b/src/Containers/ParsedInput.php index 06cc2ab..d469df5 100644 --- a/src/Containers/ParsedInput.php +++ b/src/Containers/ParsedInput.php @@ -151,7 +151,7 @@ public function asArray(): array /** * Invoked via `isset` and `empty` */ - public function offsetExists($offset) + public function offsetExists($offset): bool { throw new BadMethodCallException( "ParsedInput is already validated, and contains all expected " . @@ -161,9 +161,8 @@ public function offsetExists($offset) /** * Invoked by array access of the object - * @return mixed */ - public function offsetGet($offset) + public function offsetGet($offset): mixed { $data = $this->getData(); if ( @@ -182,7 +181,7 @@ public function offsetGet($offset) /** * Invoked by setting an array value on the object */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): never { throw new BadMethodCallException("ParsedInput is read-only"); } @@ -190,7 +189,7 @@ public function offsetSet($offset, $value) /** * Invoked via `unset` */ - public function offsetUnset($offset) + public function offsetUnset($offset): never { throw new BadMethodCallException("ParsedInput is read-only"); } From 943688f22810939ad43af1cb1863a61aafef7c21 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:45:36 -0700 Subject: [PATCH 09/15] Replace setMethods() with onlyMethods() Co-Authored-By: Claude Opus 4.5 --- tests/Containers/ParsedInputTest.php | 2 +- tests/Containers/SafeInputTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Containers/ParsedInputTest.php b/tests/Containers/ParsedInputTest.php index 15dd721..d829729 100644 --- a/tests/Containers/ParsedInputTest.php +++ b/tests/Containers/ParsedInputTest.php @@ -388,7 +388,7 @@ private function addOptional(string $key, InputObject $type): void private function getMockIO(bool $valid, $ret = null): InputObject { $mock = $this->getMockBuilder(InputObject::class) - ->setMethods(['evaluate', 'getDefaultValue']) + ->onlyMethods(['evaluate', 'getDefaultValue']) ->getMockForAbstractClass(); if ($valid) { diff --git a/tests/Containers/SafeInputTest.php b/tests/Containers/SafeInputTest.php index e23163d..745d698 100644 --- a/tests/Containers/SafeInputTest.php +++ b/tests/Containers/SafeInputTest.php @@ -18,7 +18,7 @@ private function getSafeInput(array $data): SafeInput { $mock = $this->getMockBuilder(ParsedInput::class) ->disableOriginalConstructor() - ->setMethods(['getData', 'isValidated']) + ->onlyMethods(['getData', 'isValidated']) ->getMock(); $mock->expects($this->any()) ->method('getData') From da35e774db264c31cef84a00d422df93c5de2f44 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:47:40 -0700 Subject: [PATCH 10/15] Replace getMockForAbstractClass() with createStub()/getMock() Co-Authored-By: Claude Opus 4.5 --- tests/Containers/ParsedInputTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/Containers/ParsedInputTest.php b/tests/Containers/ParsedInputTest.php index d829729..453f6bc 100644 --- a/tests/Containers/ParsedInputTest.php +++ b/tests/Containers/ParsedInputTest.php @@ -128,7 +128,7 @@ public function testMissingRequiredParametersAreCaught(): void { $this->addRequired( 'short', - $this->getMockForAbstractClass('Firehed\Input\Objects\InputObject') + $this->createStub(InputObject::class) ); $parsed = new ParsedInput([]); @@ -181,7 +181,7 @@ public function testMissingOptionalParametersAreSetToNull(): void { $this->addOptional( 'short', - $this->getMockForAbstractClass('Firehed\Input\Objects\InputObject') + $this->createStub(InputObject::class) ); $parsed = new ParsedInput([]); @@ -388,8 +388,8 @@ private function addOptional(string $key, InputObject $type): void private function getMockIO(bool $valid, $ret = null): InputObject { $mock = $this->getMockBuilder(InputObject::class) - ->onlyMethods(['evaluate', 'getDefaultValue']) - ->getMockForAbstractClass(); + ->onlyMethods(['evaluate', 'getDefaultValue', 'validate']) + ->getMock(); if ($valid) { $mock->expects($this->atLeastOnce()) From 2f00a2fdfc43992b9fcdbe2f858b2ec7628104ea Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:50:50 -0700 Subject: [PATCH 11/15] Use mocks-as-stubs with AllowMockObjectsWithoutExpectations Co-Authored-By: Claude Opus 4.5 --- tests/Containers/SafeInputTest.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/tests/Containers/SafeInputTest.php b/tests/Containers/SafeInputTest.php index 745d698..7bdb53b 100644 --- a/tests/Containers/SafeInputTest.php +++ b/tests/Containers/SafeInputTest.php @@ -5,6 +5,7 @@ namespace Firehed\Input\Containers; use BadMethodCallException; +use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; @@ -16,33 +17,30 @@ class SafeInputTest extends TestCase */ private function getSafeInput(array $data): SafeInput { - $mock = $this->getMockBuilder(ParsedInput::class) + $stub = $this->getMockBuilder(ParsedInput::class) ->disableOriginalConstructor() ->onlyMethods(['getData', 'isValidated']) ->getMock(); - $mock->expects($this->any()) - ->method('getData') - ->willReturn($data); - $mock->expects($this->any()) - ->method('isValidated') - ->willReturn(true); - return new SafeInput($mock); + $stub->method('getData')->willReturn($data); + $stub->method('isValidated')->willReturn(true); + return new SafeInput($stub); } + #[AllowMockObjectsWithoutExpectations] public function testConstruct(): void { $this->assertInstanceOf(SafeInput::class, $this->getSafeInput([])); } + #[AllowMockObjectsWithoutExpectations] public function testConstructThrowsWithUnvalidatedInput(): void { - $valid = $this->getMockBuilder(ParsedInput::class) + $stub = $this->getMockBuilder(ParsedInput::class) ->disableOriginalConstructor() + ->onlyMethods(['isValidated']) ->getMock(); - $valid->expects($this->atLeastOnce()) - ->method('isValidated') - ->willReturn(false); + $stub->method('isValidated')->willReturn(false); $this->expectException(BadMethodCallException::class); - new SafeInput($valid); + new SafeInput($stub); } } From cfa1dcf59b18ba6669f84dc879c4f31d16db8355 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:52:08 -0700 Subject: [PATCH 12/15] Leave PHPStan alone for now --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index f463b14..e471895 100644 --- a/composer.json +++ b/composer.json @@ -25,8 +25,8 @@ "php": "^8.2" }, "require-dev": { - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-phpunit": "^0.12", "phpunit/phpunit": "^11.0 || ^12.0 || ^13.0", "squizlabs/php_codesniffer": "^4.0" }, From 9dc65a714ce18ffde12884afca726d5b792f3066 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:52:34 -0700 Subject: [PATCH 13/15] phpcs --- src/Containers/SafeInput.php | 1 - src/Exceptions/InputException.php | 1 - src/Interfaces/ParserInterface.php | 1 - src/Interfaces/ValidationInterface.php | 1 - src/Parsers/JSON.php | 1 - src/Parsers/URLEncoded.php | 1 - src/SafeInputTestTrait.php | 1 - tests/Containers/ParsedInputTest.php | 1 - tests/Containers/RawInputTest.php | 1 - 9 files changed, 9 deletions(-) diff --git a/src/Containers/SafeInput.php b/src/Containers/SafeInput.php index 30012f6..8dc9724 100644 --- a/src/Containers/SafeInput.php +++ b/src/Containers/SafeInput.php @@ -13,7 +13,6 @@ */ class SafeInput extends ParsedInput { - public function __construct(ParsedInput $valid) { if (!$valid->isValidated()) { diff --git a/src/Exceptions/InputException.php b/src/Exceptions/InputException.php index c0758e7..6dddfad 100644 --- a/src/Exceptions/InputException.php +++ b/src/Exceptions/InputException.php @@ -9,7 +9,6 @@ class InputException extends UnexpectedValueException { - public const PARSE_ERROR = 1; public const FORMAT_ERROR = 2; public const MISSING_VALUES = 3; diff --git a/src/Interfaces/ParserInterface.php b/src/Interfaces/ParserInterface.php index 0e80519..910cda3 100644 --- a/src/Interfaces/ParserInterface.php +++ b/src/Interfaces/ParserInterface.php @@ -8,7 +8,6 @@ interface ParserInterface { - /** * @param string $raw_input Unparsed, unvalidated input * @return array Parsed, unvalidated input diff --git a/src/Interfaces/ValidationInterface.php b/src/Interfaces/ValidationInterface.php index db748af..ed07e6c 100644 --- a/src/Interfaces/ValidationInterface.php +++ b/src/Interfaces/ValidationInterface.php @@ -8,7 +8,6 @@ interface ValidationInterface { - /** * @return array */ diff --git a/src/Parsers/JSON.php b/src/Parsers/JSON.php index fb2fc37..b2314c9 100644 --- a/src/Parsers/JSON.php +++ b/src/Parsers/JSON.php @@ -7,7 +7,6 @@ class JSON implements ParserInterface { - public function parse(string $raw_input): array { if (!strlen($raw_input)) { diff --git a/src/Parsers/URLEncoded.php b/src/Parsers/URLEncoded.php index 7e19533..9ef9379 100644 --- a/src/Parsers/URLEncoded.php +++ b/src/Parsers/URLEncoded.php @@ -7,7 +7,6 @@ class URLEncoded implements ParserInterface { - public function parse(string $raw_input): array { if (!strlen($raw_input)) { diff --git a/src/SafeInputTestTrait.php b/src/SafeInputTestTrait.php index 2ad96d8..3ec957f 100644 --- a/src/SafeInputTestTrait.php +++ b/src/SafeInputTestTrait.php @@ -4,7 +4,6 @@ trait SafeInputTestTrait { - /** * Transform an array of data to a SafeInput object. Intended for testing * consumers of validated input where testing the actual validation process diff --git a/tests/Containers/ParsedInputTest.php b/tests/Containers/ParsedInputTest.php index 453f6bc..880cb48 100644 --- a/tests/Containers/ParsedInputTest.php +++ b/tests/Containers/ParsedInputTest.php @@ -17,7 +17,6 @@ #[CoversClass(ParsedInput::class)] class ParsedInputTest extends TestCase { - // ----(Constructor)-------------------------------------------------------- public function testConstructWorks(): void diff --git a/tests/Containers/RawInputTest.php b/tests/Containers/RawInputTest.php index 1e53773..8b4ad7e 100644 --- a/tests/Containers/RawInputTest.php +++ b/tests/Containers/RawInputTest.php @@ -10,7 +10,6 @@ #[CoversClass(RawInput::class)] class RawInputTest extends TestCase { - public function testConstruct(): void { $this->assertInstanceOf( From ca55a2f9d259cbe0861cfff1188a90a3b6c34c03 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:54:36 -0700 Subject: [PATCH 14/15] update actions --- .github/workflows/lint.yml | 4 ++-- .github/workflows/static-analysis.yml | 4 ++-- .github/workflows/test.yml | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ce4db10..2920608 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,14 +15,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 - name: Cache Composer packages id: composer-cache - uses: actions/cache@v2 + uses: actions/cache@v5 with: path: vendor key: ${{ runner.os }}-php-${{ hashFiles('**/composer.json') }} diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index d1fd5c3..8294b8f 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -15,14 +15,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 - name: Cache Composer packages id: composer-cache - uses: actions/cache@v2 + uses: actions/cache@v5 with: path: vendor key: ${{ runner.os }}-php-${{ hashFiles('**/composer.json') }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index de0c351..1741a11 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,11 +20,11 @@ jobs: - 'high' - 'low' php: - - '8.0' + - '8.2' steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -35,7 +35,7 @@ jobs: - name: Cache Composer packages id: composer-cache - uses: actions/cache@v2 + uses: actions/cache@v5 with: path: vendor key: ${{ runner.os }}-php-${{ matrix.dependencies }}-${{ matrix.php }}-${{ hashFiles('**/composer.json') }} @@ -70,4 +70,4 @@ jobs: - name: Submit code coverage if: ${{ always() }} - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v5 From 74db85312f5b8f6b3660b1808824817a80c931d6 Mon Sep 17 00:00:00 2001 From: Eric Stern Date: Sat, 9 May 2026 15:56:10 -0700 Subject: [PATCH 15/15] Lock phpstan to 8.2 for now --- .github/workflows/static-analysis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 8294b8f..179a2d9 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -19,6 +19,8 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' - name: Cache Composer packages id: composer-cache