Initialize isolated database before agent tests

This commit is contained in:
2026-08-27 18:54:32 +02:00
parent 2ee2887eb9
commit 66b6df03a6
4 changed files with 15 additions and 2 deletions

View File

@@ -43,6 +43,8 @@ Die nachgelagerten Testprozesse erhalten separat konfigurierte `TEST_DB_*`-Zugan
Dieser Benutzer darf ausschliesslich die isolierten Testschemas bearbeiten. Fuer Laravel Dieser Benutzer darf ausschliesslich die isolierten Testschemas bearbeiten. Fuer Laravel
werden daraus `DB_*`, `ERP_DB_*` und `COCKPIT_CONFIG_DATABASE` gesetzt; Aider selbst sieht werden daraus `DB_*`, `ERP_DB_*` und `COCKPIT_CONFIG_DATABASE` gesetzt; Aider selbst sieht
diese Werte nie. Produktive ERP- oder Kundenzugangsdaten duerfen hier nicht verwendet werden. diese Werte nie. Produktive ERP- oder Kundenzugangsdaten duerfen hier nicht verwendet werden.
Vor jedem Testlauf initialisiert `php artisan migrate:fresh --force` das isolierte Laravel-
Schema neu. Deshalb muessen alle `TEST_DB_*`-Schemas dediziert und vollstaendig entbehrlich sein.
Laravel-Tests laufen mit PHP und Composer direkt im isolierten Worker. Der Docker-Socket Laravel-Tests laufen mit PHP und Composer direkt im isolierten Worker. Der Docker-Socket
des Hosts wird nicht eingebunden. Abgebrochene Claims werden nach standardmaessig 90 des Hosts wird nicht eingebunden. Abgebrochene Claims werden nach standardmaessig 90

View File

@@ -22,7 +22,7 @@ services:
MISTRAL_API_KEY: ${MISTRAL_API_KEY:-} MISTRAL_API_KEY: ${MISTRAL_API_KEY:-}
POLL_SECONDS: ${POLL_SECONDS:-60} POLL_SECONDS: ${POLL_SECONDS:-60}
STALE_CLAIM_MINUTES: ${STALE_CLAIM_MINUTES:-90} STALE_CLAIM_MINUTES: ${STALE_CLAIM_MINUTES:-90}
TEST_COMMANDS: ${TEST_COMMANDS:-composer install --no-interaction --prefer-dist;;php artisan test} TEST_COMMANDS: ${TEST_COMMANDS:-composer install --no-interaction --prefer-dist;;php artisan migrate:fresh --force;;php artisan test}
TEST_DB_HOST: ${TEST_DB_HOST:-host.docker.internal} TEST_DB_HOST: ${TEST_DB_HOST:-host.docker.internal}
TEST_DB_PORT: ${TEST_DB_PORT:-33060} TEST_DB_PORT: ${TEST_DB_PORT:-33060}
TEST_DB_NAME: ${TEST_DB_NAME:-laravel_ai_chat_agent_test} TEST_DB_NAME: ${TEST_DB_NAME:-laravel_ai_chat_agent_test}

View File

@@ -75,7 +75,7 @@ class Settings:
test_commands=_commands( test_commands=_commands(
os.getenv( os.getenv(
"TEST_COMMANDS", "TEST_COMMANDS",
"composer install --no-interaction --prefer-dist;;php artisan test", "composer install --no-interaction --prefer-dist;;php artisan migrate:fresh --force;;php artisan test",
) )
), ),
test_database_host=os.getenv("TEST_DB_HOST", "host.docker.internal"), test_database_host=os.getenv("TEST_DB_HOST", "host.docker.internal"),

View File

@@ -52,3 +52,14 @@ def test_pr_requires_gitea_token() -> None:
config = settings(mode="pr", dry_run=False) config = settings(mode="pr", dry_run=False)
with pytest.raises(ValueError, match="GITEA_TOKEN"): with pytest.raises(ValueError, match="GITEA_TOKEN"):
config.validate() config.validate()
def test_default_commands_initialize_disposable_laravel_schema(monkeypatch) -> None:
monkeypatch.setenv("FAILURE_DB_PASSWORD", "failure-secret")
monkeypatch.setenv("TEST_DB_PASSWORD", "test-secret")
monkeypatch.delenv("TEST_COMMANDS", raising=False)
config = Settings.from_env()
assert "php artisan migrate:fresh --force" in config.test_commands
assert config.test_commands[-1] == "php artisan test"