Fassung 1.4.1: dem Releasearchiv fehlten migrations.php und cli-config.php
CMS quality / php (8.2) (push) Canceled after 0s
CMS quality / php (8.4) (push) Canceled after 0s
CMS quality / browser (push) Canceled after 0s
CMS quality / mysql (push) Canceled after 0s

Auf dem Hosting brach die Installation im dritten Schritt ab - "The
configuration file does not exist", genau dort, wo die Tabellen
entstehen sollten. Beide Dateien standen weder in der Mitnahme- noch in
der Ausschlussliste des Releaseskripts.

Ein Test ordnet jetzt jeden Eintrag im Projektstamm einer der beiden
Listen zu: was neu dazukommt und unbedacht bleibt, laesst ihn
fehlschlagen. Der Installationsweg wurde danach vollstaendig
durchgespielt - 3504 Dateien entpackt, 14 Migrationen ausgefuehrt, 15
Tabellen angelegt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
kantarciandClaude Opus 5 committed 2026-09-13 21:43:56 +02:00
1 parent c5e85e4db0
commit c517173579
4 files changed
+37 -3

No files matched your search

+30
View File
@@ -1047,6 +1047,36 @@ final class CmsTest extends TestCase
}
}
public function testTheReleaseArchiveCarriesEveryFileTheApplicationNeeds(): void
{
// Auf dem Hosting gefunden, nicht hier: „The configuration file does not exist" beim
// Anlegen der Tabellen. Im Releasearchiv fehlte migrations.php - die Datei, die Doctrine
// sagt, wo die Migrationen liegen. Sie stand weder in der Mitnahmeliste noch in der
// Ausschlussliste, also fiel niemandem auf, dass sie fehlt.
$skript = (string) file_get_contents(__DIR__.'/../scripts/build-release.php');
preg_match('/\$include = \[(.+?)\];/s', $skript, $mit);
preg_match('/\$skip = \[(.+?)\];/s', $skript, $ohne);
self::assertNotEmpty($mit, 'Die Mitnahmeliste des Releaseskripts ist nicht auffindbar.');
$liste = static fn (string $roh): array => array_map(
static fn (string $eintrag): string => trim($eintrag, " '
"),
explode(',', preg_replace('#//[^
]*#', '', $roh) ?? ''),
);
$eingeordnet = [...$liste($mit[1]), ...$liste($ohne[1] ?? ''), '.env', '.env.local', 'LICENSE'];
foreach (scandir(__DIR__.'/..') ?: [] as $eintrag) {
if (in_array($eintrag, ['.', '..'], true) || str_starts_with($eintrag, '.git')) {
continue;
}
self::assertContains(
$eintrag,
$eingeordnet,
sprintf('„%s" steht im Projektstamm, aber weder in der Mitnahme- noch in der Ausschlussliste von build-release.php. Ein Release ohne diese Datei fällt erst auf dem Hosting auf.', $eintrag),
);
}
}
public function testNoStylesheetHasADanglingSelector(): void
{
// Gefunden, als der Einwilligungsdialog plötzlich ungestaltet unter dem Fuß stand: beim