From 66b6df03a6e5bfba409757e7d963dd7d2da86a7f Mon Sep 17 00:00:00 2001 From: Christian Meyer Date: Thu, 27 Aug 2026 18:54:32 +0200 Subject: [PATCH] Initialize isolated database before agent tests --- README.md | 2 ++ docker-compose.yml | 2 +- src/lai_automation/config.py | 2 +- tests/test_config.py | 11 +++++++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 68de25e..877a53a 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,8 @@ Die nachgelagerten Testprozesse erhalten separat konfigurierte `TEST_DB_*`-Zugan Dieser Benutzer darf ausschliesslich die isolierten Testschemas bearbeiten. Fuer Laravel 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. +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 des Hosts wird nicht eingebunden. Abgebrochene Claims werden nach standardmaessig 90 diff --git a/docker-compose.yml b/docker-compose.yml index 91c63bc..5bcab25 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,7 @@ services: MISTRAL_API_KEY: ${MISTRAL_API_KEY:-} POLL_SECONDS: ${POLL_SECONDS:-60} 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_PORT: ${TEST_DB_PORT:-33060} TEST_DB_NAME: ${TEST_DB_NAME:-laravel_ai_chat_agent_test} diff --git a/src/lai_automation/config.py b/src/lai_automation/config.py index 122e249..2f8d2e3 100644 --- a/src/lai_automation/config.py +++ b/src/lai_automation/config.py @@ -75,7 +75,7 @@ class Settings: test_commands=_commands( os.getenv( "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"), diff --git a/tests/test_config.py b/tests/test_config.py index 642c72b..4cde197 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -52,3 +52,14 @@ def test_pr_requires_gitea_token() -> None: config = settings(mode="pr", dry_run=False) with pytest.raises(ValueError, match="GITEA_TOKEN"): 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"