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"