From cad5522324e21e5ae531d80ac2106a8ccfa2d8b0 Mon Sep 17 00:00:00 2001 From: Jonathan Williamson Date: Tue, 19 May 2026 23:02:34 +0100 Subject: [PATCH] Fix PHP 8.4 CSV escape deprecation --- packages/model/src/Model.php | 2 +- tests/ModelTest.php | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/model/src/Model.php b/packages/model/src/Model.php index f920dea..ff1f623 100644 --- a/packages/model/src/Model.php +++ b/packages/model/src/Model.php @@ -135,7 +135,7 @@ public static function migrate(?string $locale = null): void $data = collect(Repository::fetchData(static::class, $locale)); - $schema = collect(str_getcsv($data->first())); + $schema = collect(str_getcsv($data->first(), escape: '\\')); $data->transform(function (string $line) use ($schema): Collection { return $schema->combine( diff --git a/tests/ModelTest.php b/tests/ModelTest.php index d956a12..e566ab7 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -45,6 +45,33 @@ protected function testModel(string $model): void } } + public function test_can_migrate_models_without_php_deprecations(): void + { + Repository::registerSource(Models\Foo::class, App::getLocale(), __DIR__ . '/data/foo-en.csv'); + + $deprecations = []; + $errorReporting = error_reporting(E_ALL); + + set_error_handler(function (int $severity, string $message) use (&$deprecations): bool { + if (($severity === E_DEPRECATED) || ($severity === E_USER_DEPRECATED)) { + $deprecations[] = $message; + + return true; + } + + return false; + }); + + try { + Models\Foo::cache([App::getLocale()]); + } finally { + restore_error_handler(); + error_reporting($errorReporting); + } + + $this->assertSame([], $deprecations); + } + public function test_can_translate_models(): void { Repository::registerSource(Models\Foo::class, 'en', __DIR__ . '/data/foo-en.csv');