withTestDatabase : un nom fixe fait partager la base de test à deux checkouts du même dépôt qui tournent en même temps #174

Open
opened 2026-10-18 14:27:11 +00:00 by marc-agbanavor · 0 comments

Constat (@eqs/testing 0.24.1, dépôt EQS/hub, 2026-10-18)

withTestDatabase({ nom }) nomme le projet de la base jetable PREFIXE_PROJET + nom (base.js, l. ~257). Le nom est FIXE par suite (hub-droits, hub-limites, hub-oauth…). Deux checkouts du même dépôt — un worktree d'agent et le checkout principal, sur le même poste — qui lancent pnpm test:integration en même temps lèvent donc des bases de MÊME nom : la seconde suite tombe sur la base (ou le conteneur) de la première.

Commande : pnpm test:integration dans ~/work/eq-native/hub-agent-outils (worktree), pendant qu'un autre agent jouait la suite du hub dans ~/projects/eqs-hub.

Obtenu : échecs au hasard, différents d'un passage à l'autre, tous de la forme Unique constraint failed on the fields: (\email`)/(`id`)/(`slug`)dès lebeforeAll (import-hq, limites-de-debit, redis, droits), et un /health503 danssecrets.test.ts`. Les mêmes fichiers passent seuls ; la suite complète passe (21/21) dès que l'autre checkout a fini.

Attendu : deux checkouts ne partagent jamais une base de test — c'est la promesse « jetable par construction » de la doc de VARIABLE_SERVEUR, et le même défaut que #62 pour la pile de développement (là, c'était le nom de projet Compose).

Proposition : suffixer le projet par une empreinte courte de la racine du dépôt (racineDuDepot(), déjà connue pour inscrireBaseDeTest) et du pid, ou tirer le suffixe au sort comme le fait le mode serveur ; garder nom comme préfixe lisible. conteneursDeTest(root) filtre déjà par racine, donc le nettoyage suit.

Remonté depuis le hub (AGENTS.md : « tu ne contournes pas une faiblesse »). Aucun contournement posé dans le hub : j'ai attendu la fin de l'autre exécution.

**Constat** (`@eqs/testing` 0.24.1, dépôt `EQS/hub`, 2026-10-18) `withTestDatabase({ nom })` nomme le projet de la base jetable `PREFIXE_PROJET + nom` (`base.js`, l. ~257). Le `nom` est FIXE par suite (`hub-droits`, `hub-limites`, `hub-oauth`…). Deux checkouts du même dépôt — un worktree d'agent et le checkout principal, sur le même poste — qui lancent `pnpm test:integration` en même temps lèvent donc des bases de MÊME nom : la seconde suite tombe sur la base (ou le conteneur) de la première. **Commande** : `pnpm test:integration` dans `~/work/eq-native/hub-agent-outils` (worktree), pendant qu'un autre agent jouait la suite du hub dans `~/projects/eqs-hub`. **Obtenu** : échecs au hasard, différents d'un passage à l'autre, tous de la forme `Unique constraint failed on the fields: (\`email\`)` / `(\`id\`)` / `(\`slug\`)` dès le `beforeAll` (`import-hq`, `limites-de-debit`, `redis`, `droits`), et un `/health` 503 dans `secrets.test.ts`. Les mêmes fichiers passent seuls ; la suite complète passe (21/21) dès que l'autre checkout a fini. **Attendu** : deux checkouts ne partagent jamais une base de test — c'est la promesse « jetable par construction » de la doc de `VARIABLE_SERVEUR`, et le même défaut que #62 pour la pile de développement (là, c'était le nom de projet Compose). **Proposition** : suffixer le projet par une empreinte courte de la racine du dépôt (`racineDuDepot()`, déjà connue pour `inscrireBaseDeTest`) et du `pid`, ou tirer le suffixe au sort comme le fait le mode serveur ; garder `nom` comme préfixe lisible. `conteneursDeTest(root)` filtre déjà par racine, donc le nettoyage suit. Remonté depuis le hub (AGENTS.md : « tu ne contournes pas une faiblesse »). Aucun contournement posé dans le hub : j'ai attendu la fin de l'autre exécution.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Infrastructure/eqs-platform#174
No description provided.