From 7ca89372b99a6699b4ca516b5b8c3c871dacaf21 Mon Sep 17 00:00:00 2001 From: Jacob Dreesen Date: Wed, 11 Sep 2024 08:57:53 +0200 Subject: [PATCH] Fix importing database dumps on Alpine Linux (#27) --- CHANGELOG.md | 4 ++++ phpstan-baseline.neon | 10 ---------- src/Database/PimcoreInstaller.php | 23 +++++++++++++++-------- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29b5d05..c6c4c67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v0.12.6 +### Bugfixes: +- Fix importing database dumps on Alpine Linux + ## v0.12.5 ### Changes: - Remove unnecessary `doctrine/annotations` from test suite diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index ad88690..3898d55 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -5,16 +5,6 @@ parameters: count: 1 path: src/Database/DatabaseResetter.php - - - message: "#^Method Neusta\\\\Pimcore\\\\TestingFramework\\\\Database\\\\PimcoreInstaller\\:\\:getDataFiles\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Database/PimcoreInstaller.php - - - - message: "#^Method Neusta\\\\Pimcore\\\\TestingFramework\\\\Database\\\\PimcoreInstaller\\:\\:getDataFiles\\(\\) should return array but returns array\\\\|false\\.$#" - count: 1 - path: src/Database/PimcoreInstaller.php - - message: "#^Parameter \\#1 \\$sql of method Doctrine\\\\DBAL\\\\Connection\\:\\:executeStatement\\(\\) expects string, string\\|false given\\.$#" count: 1 diff --git a/src/Database/PimcoreInstaller.php b/src/Database/PimcoreInstaller.php index 46b451a..6325501 100644 --- a/src/Database/PimcoreInstaller.php +++ b/src/Database/PimcoreInstaller.php @@ -18,11 +18,7 @@ class PimcoreInstaller extends Installer { private const SQL_FILE_EXTENSION = '.sql'; - private const GZIP_FILE_EXTENSION = '.sql.gz'; - private const DUMP_FILE_EXTENSIONS = [ - self::SQL_FILE_EXTENSION, - self::GZIP_FILE_EXTENSION, - ]; + private const SQL_GZIP_FILE_EXTENSION = '.sql.gz'; private ?string $dumpLocation = null; @@ -48,6 +44,8 @@ public function setDumpLocation(string $dumpLocation): void } /** + * Todo: remove when support for Pimcore <11.3.3 is dropped. + * * @param Connection $db * @param string $file * @@ -61,7 +59,8 @@ public function insertDatabaseDump($db, $file = ''): void $db = Db::get(); } - if (str_ends_with($file, self::GZIP_FILE_EXTENSION)) { + // Todo: remove when support for Pimcore <11.3 is dropped + if (str_ends_with($file, self::SQL_GZIP_FILE_EXTENSION)) { $file = 'compress.zlib://' . $file; } @@ -94,14 +93,22 @@ public function insertDatabaseDump($db, $file = ''): void $db->update('users', ['id' => 0], ['name' => 'system']); } + /** + * @return array + */ protected function getDataFiles(): array { if (!$this->dumpLocation) { return []; } - $pattern = \sprintf('%s/*{%s}', $this->dumpLocation, implode(',', self::DUMP_FILE_EXTENSIONS)); + $files = [ + ...glob($this->dumpLocation . '/*' . self::SQL_FILE_EXTENSION, \GLOB_NOSORT) ?: [], + ...glob($this->dumpLocation . '/*' . self::SQL_GZIP_FILE_EXTENSION, \GLOB_NOSORT) ?: [], + ]; + + natsort($files); - return glob($pattern, \GLOB_BRACE); + return $files; } }