diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 47cebd2e..a88cc5d8 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -379,6 +379,14 @@ + + + + + + + + diff --git a/src/Stream.php b/src/Stream.php index c449c592..f5cecbb5 100644 --- a/src/Stream.php +++ b/src/Stream.php @@ -329,7 +329,10 @@ private function setStream($stream, string $mode = 'r'): void if (! is_resource($resource)) { throw new Exception\RuntimeException( - sprintf('Invalid stream reference provided: %s', (string) $error?->getMessage()), + sprintf( + 'Empty or non-existent stream identifier or file path provided: "%s"', + $stream, + ), 0, $error ); diff --git a/test/StreamTest.php b/test/StreamTest.php index 498bdff2..1f8b372b 100644 --- a/test/StreamTest.php +++ b/test/StreamTest.php @@ -9,6 +9,7 @@ use InvalidArgumentException; use Laminas\Diactoros\Exception\InvalidArgumentException as DiactorosInvalidArgumentException; use Laminas\Diactoros\Stream; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionProperty; use RuntimeException; @@ -349,9 +350,9 @@ private function findNonExistentTempName(): string } /** - * @dataProvider provideDataForIsWritable * @param non-empty-string $mode */ + #[DataProvider('provideDataForIsWritable')] public function testIsWritableReturnsCorrectFlagForMode(string $mode, bool $fileShouldExist, bool $flag): void { if ($fileShouldExist) { @@ -395,9 +396,9 @@ public static function provideDataForIsReadable(): array } /** - * @dataProvider provideDataForIsReadable * @param non-empty-string $mode */ + #[DataProvider('provideDataForIsReadable')] public function testIsReadableReturnsCorrectFlagForMode(string $mode, bool $fileShouldExist, bool $flag): void { if ($fileShouldExist) { @@ -503,9 +504,7 @@ public static function invalidResources(): array ]; } - /** - * @dataProvider invalidResources - */ + #[DataProvider('invalidResources')] public function testAttachWithNonStringNonResourceRaisesException(mixed $resource): void { $this->expectException(InvalidArgumentException::class); @@ -515,12 +514,22 @@ public function testAttachWithNonStringNonResourceRaisesException(mixed $resourc $this->stream->attach($resource); } - public function testAttachWithInvalidStringResourceRaisesException(): void + public static function invalidStringResources(): array + { + return [ + 'Empty String' => [''], + 'File path does not exist' => ['/tmp/not-a-valid-file-path'], + 'Invalid stream' => ['php://mammary'], + ]; + } + + #[DataProvider('invalidStringResources')] + public function testAttachWithInvalidStringResourceRaisesException(string $stream): void { $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Invalid stream'); + $this->expectExceptionMessage('Empty on non-existent stream identifier or file path provided'); - $this->stream->attach('foo-bar-baz'); + $this->stream->attach($stream); } public function testAttachWithResourceAttachesResource(): void