fix(tests): copier users.test.sqlite vers une base jetable pour les tests

Les tests qui démarrent l'app complète (Selenium) écrivent dans la base
users pointée par USERS_DB_PATH (comptes créés, vues sauvegardées...).
Comme ce fichier était le fixture committé lui-même, chaque exécution de
la suite le laissait modifié dans l'arbre de travail — gênant pour les
commits et le nettoyage de worktree.

Même schéma déjà utilisé pour DUCKDB_PATH et DATA_SCHEMA_CACHE dans ce
fichier : le fixture committé est copié vers une base jetable gitignorée
(tests/users.runtime.sqlite) au chargement de conftest.py, et
USERS_DB_PATH pointe sur la copie. tests/users.test.sqlite reste
désormais toujours propre.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-07-10 19:38:32 +02:00
parent ea6998ac11
commit cb205a89f3
2 changed files with 12 additions and 0 deletions
+2
View File
@@ -19,6 +19,8 @@ users.sqlite
*.sqlite-* *.sqlite-*
!tests/*.sqlite !tests/*.sqlite
!tests/**/*.sqlite !tests/**/*.sqlite
# Copie jetable de tests/users.test.sqlite, générée par tests/conftest.py
tests/users.runtime.sqlite
# LLM plugins # LLM plugins
.superpowers/ .superpowers/
+10
View File
@@ -60,6 +60,16 @@ shutil.copyfile(_SCHEMA_FIXTURE, _SCHEMA_CACHE)
os.environ["DATA_SCHEMA_CACHE"] = str(_SCHEMA_CACHE) os.environ["DATA_SCHEMA_CACHE"] = str(_SCHEMA_CACHE)
os.environ.pop("DATA_SCHEMA_PATH", None) os.environ.pop("DATA_SCHEMA_PATH", None)
# Base users partagée par les tests qui démarrent l'app complète (Selenium) :
# on COPIE le fixture committé vers une base jetable (users.runtime.sqlite,
# gitignorée) et on pointe USERS_DB_PATH dessus. Ainsi, toute écriture faite
# pendant les tests (comptes créés, vues sauvegardées, etc.) ne mute pas
# tests/users.test.sqlite (versionné, partagé pour toute la suite).
_USERS_DB_FIXTURE = Path(os.path.abspath("tests/users.test.sqlite"))
_USERS_DB_RUNTIME = Path(os.path.abspath("tests/users.runtime.sqlite"))
shutil.copyfile(_USERS_DB_FIXTURE, _USERS_DB_RUNTIME)
os.environ["USERS_DB_PATH"] = str(_USERS_DB_RUNTIME)
def _cleanup_db_artifacts() -> None: def _cleanup_db_artifacts() -> None:
for artifact in ( for artifact in (