Plan: das Zurueckstellen der Umgebung war falsch, und die Pruefhuerde zu niedrig
Der Testcode im Plan sicherte $_SERVER und stellte daraus zurueck. phpunit haelt seine <env>-Werte aber in $_ENV und putenv() — gemessen: ADMIN_HOSTS und FILES_HOST fehlen in $_SERVER voellig. Das Zurueckstellen loeschte sie damit, und jeder Test danach las ADMIN_HOSTS aus der echten .env des Containers. Die Suite fiel an zwei Stellen, die mit Hostnamen nichts zu tun haben. Gefunden hat es nicht der Filterlauf, den der Plan verlangte — der war gruen. Gefunden hat es der Vergleich zweier voller Laeufe, mit und ohne die Aenderung: 2939 gruen gegen zwei Fehlschlaege. Deshalb verlangt Schritt 5 jetzt den vollen Lauf und nennt den Kontrollversuch beim Namen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>feat/versandtakt
parent
4f57435c4d
commit
9d3f3c27b5
|
|
@ -115,12 +115,21 @@ function hostSeparationTable(): array
|
|||
'ADMIN_HOST_EXCLUSIVE' => 'true',
|
||||
];
|
||||
|
||||
// Gemerkt und zurückgestellt, nicht bloß gelöscht: phpunit.xml setzt
|
||||
// FILES_HOST und ADMIN_HOSTS für den ganzen Lauf, und ein Test, der sie
|
||||
// hinterher entfernt, kippt die Tests nach ihm.
|
||||
// Alle drei Kanäle einzeln, und das ist kein Übereifer: phpunit.xml legt
|
||||
// seine <env>-Werte in $_ENV und putenv() ab, NIE in $_SERVER. Wer nur
|
||||
// $_SERVER sichert, bekommt null zurück, löscht beim Zurückstellen
|
||||
// ADMIN_HOSTS und FILES_HOST — und jeder Test NACH diesem liest sie dann
|
||||
// aus der echten .env des Containers. Genau so sind ImpersonationTest und
|
||||
// PublicSiteGateTest gefallen, mit einem Fehlerbild, das nach einer
|
||||
// Reihenfolge-Abhängigkeit der Suite aussieht und keine ist.
|
||||
$previous = [];
|
||||
foreach ($env as $key => $value) {
|
||||
$previous[$key] = $_SERVER[$key] ?? null;
|
||||
$previous[$key] = [
|
||||
'env' => array_key_exists($key, $_ENV) ? $_ENV[$key] : null,
|
||||
'server' => array_key_exists($key, $_SERVER) ? $_SERVER[$key] : null,
|
||||
'putenv' => getenv($key),
|
||||
];
|
||||
|
||||
putenv("{$key}={$value}");
|
||||
$_ENV[$key] = $value;
|
||||
$_SERVER[$key] = $value;
|
||||
|
|
@ -147,14 +156,23 @@ function hostSeparationTable(): array
|
|||
Model::setConnectionResolver($original['db']);
|
||||
Model::setEventDispatcher($original['events']);
|
||||
|
||||
foreach ($previous as $key => $value) {
|
||||
if ($value === null) {
|
||||
foreach ($previous as $key => $was) {
|
||||
if ($was['putenv'] === false) {
|
||||
putenv($key);
|
||||
unset($_ENV[$key], $_SERVER[$key]);
|
||||
} else {
|
||||
putenv("{$key}={$value}");
|
||||
$_ENV[$key] = $value;
|
||||
$_SERVER[$key] = $value;
|
||||
putenv("{$key}={$was['putenv']}");
|
||||
}
|
||||
|
||||
if ($was['env'] === null) {
|
||||
unset($_ENV[$key]);
|
||||
} else {
|
||||
$_ENV[$key] = $was['env'];
|
||||
}
|
||||
|
||||
if ($was['server'] === null) {
|
||||
unset($_SERVER[$key]);
|
||||
} else {
|
||||
$_SERVER[$key] = $was['server'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -292,11 +310,23 @@ In `config/filesystems.php`, Zeile 36, `'serve' => true` ersetzen durch:
|
|||
Run: `docker exec clupilot-app-1 php artisan test --filter=HostSeparation`
|
||||
Expected: PASS, drei Tests.
|
||||
|
||||
- [ ] **Step 5: Die Nachbartests laufen lassen**
|
||||
- [ ] **Step 5: Den VOLLEN Testlauf fahren — nicht nur die Nachbarn**
|
||||
|
||||
Run: `docker exec clupilot-app-1 php artisan test --filter="PortalHost|FilesHost|Welcome|OfficialDomains"`
|
||||
Expected: PASS. Das prüft, dass das Zurückstellen der Anwendungsinstanz sauber
|
||||
ist und dass `serve => false` nichts anderes trifft.
|
||||
Run: `docker exec clupilot-app-1 php artisan test`
|
||||
Expected: alles grün, **0 failed**.
|
||||
|
||||
Ein Filterlauf genügt hier nicht, und das ist keine Vorsicht, sondern Erfahrung:
|
||||
dieser Test verändert Prozesszustand, den *andere* Tests lesen. Ein Filter über
|
||||
die naheliegenden Nachbarn war grün, während die volle Suite an zwei ganz
|
||||
anderen Stellen fiel (`ImpersonationTest`, `PublicSiteGateTest`) — weil das
|
||||
Zurückstellen der Umgebungsvariablen `$_SERVER` sicherte, phpunit seine Werte
|
||||
aber in `$_ENV` und `putenv()` hält. Wer nur filtert, sieht genau diese Klasse
|
||||
von Fehler nie.
|
||||
|
||||
Zur Kontrolle, falls etwas fällt: derselbe Lauf **ohne** die beiden geänderten
|
||||
Dateien muss grün sein. Erst der Vergleich sagt, ob ein Fehlschlag von dieser
|
||||
Aufgabe kommt oder schon vorher da war — „sieht unverwandt aus" ist keine
|
||||
Antwort auf diese Frage.
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue