From cc14a4860487b083e0667a304a37fab146d0e9cb Mon Sep 17 00:00:00 2001 From: oleibman Date: Wed, 15 Sep 2021 12:40:03 -0700 Subject: [PATCH] Permit CSV Delimiter to be Set to Null (#2288) * Permit CSV Delimiter to be Set to Null See issue #2287. A 1-character change. The delimiter variable is defined as nullable, and getDelimiter can return null; setDelimiter should follow suit. * Scrutinizer Inanity Are you sure the test always returns null????? Yes, I'm sure, that's why it's part of the test. Let's see if we can recode it and miss this "problem". --- src/PhpSpreadsheet/Reader/Csv.php | 2 +- .../Reader/Csv/CsvTest.php | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/PhpSpreadsheet/Reader/Csv.php b/src/PhpSpreadsheet/Reader/Csv.php index a142ef27..a8567bea 100644 --- a/src/PhpSpreadsheet/Reader/Csv.php +++ b/src/PhpSpreadsheet/Reader/Csv.php @@ -369,7 +369,7 @@ class Csv extends BaseReader return $this->delimiter; } - public function setDelimiter(string $delimiter): self + public function setDelimiter(?string $delimiter): self { $this->delimiter = $delimiter; diff --git a/tests/PhpSpreadsheetTests/Reader/Csv/CsvTest.php b/tests/PhpSpreadsheetTests/Reader/Csv/CsvTest.php index b29655fb..24887f1b 100644 --- a/tests/PhpSpreadsheetTests/Reader/Csv/CsvTest.php +++ b/tests/PhpSpreadsheetTests/Reader/Csv/CsvTest.php @@ -251,4 +251,25 @@ EOF; [(version_compare(PHP_VERSION, '7.4') < 0) ? "\x0" : '', ','], ]; } + + /** + * This test could be simpler, but Scrutinizer has a minor (and silly) problem. + * + * @dataProvider providerNull + */ + public function testSetDelimiterNull(?string $setNull): void + { + $reader = new Csv(); + $reader->setDelimiter(','); + self::assertSame(',', $reader->getDelimiter()); + $reader->setDelimiter($setNull); + self::assertSame($setNull, $reader->getDelimiter()); + } + + public function providerNull(): array + { + return [ + [null], + ]; + } }