diff --git a/src/Polyfill/EmptyEscapeParser.php b/src/Polyfill/EmptyEscapeParser.php index a4425ea1..8bef3b51 100644 --- a/src/Polyfill/EmptyEscapeParser.php +++ b/src/Polyfill/EmptyEscapeParser.php @@ -150,7 +150,9 @@ private static function filterDocument($document) private static function extractRecord(): array { $record = []; - self::$line = self::$document->fgets(); + if (false === (self::$line = self::$document->fgets())) { + return [null]; + } do { $method = 'extractFieldContent'; $buffer = ltrim(self::$line, self::$trim_mask); diff --git a/tests/Polyfill/EmptyEscapeParserTest.php b/tests/Polyfill/EmptyEscapeParserTest.php index feaf6596..cfbcda0e 100644 --- a/tests/Polyfill/EmptyEscapeParserTest.php +++ b/tests/Polyfill/EmptyEscapeParserTest.php @@ -124,6 +124,35 @@ public function testPreserveEmptyLines() } } + /** + * @covers ::parse + * @covers ::extractRecord + * @covers ::extractFieldContent + * @covers ::extractEnclosedFieldContent + */ + public function testReadingOnlyStream() + { + $source = << $record) { + self::assertSame($expected[$offset], $record); + } + + unlink($path); + } + /** * @covers ::parse * @covers ::extractRecord