Fix: alle drei Env-Kanäle einzeln sichern, sonst kippt phpunit.xml's ADMIN_HOSTS/FILES_HOST
parent
9d3f3c27b5
commit
53f1293f09
|
|
@ -36,12 +36,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;
|
||||
|
|
@ -68,14 +77,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'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue