@mostajs/mjs-unit 0.11.2 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/bin/cli.mjs +97 -5
- package/dist/d4.d.ts +44 -0
- package/dist/d4.d.ts.map +1 -0
- package/dist/d4.js +225 -0
- package/dist/d4.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -2
- package/dist/index.js.map +1 -1
- package/dist/report.d.ts +25 -0
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +1 -1
- package/dist/report.js.map +1 -1
- package/dist/s1p.d.ts +36 -0
- package/dist/s1p.d.ts.map +1 -0
- package/dist/s1p.js +146 -0
- package/dist/s1p.js.map +1 -0
- package/llms.txt +72 -0
- package/package.json +1 -1
package/llms.txt
CHANGED
|
@@ -111,6 +111,25 @@ node node_modules/@mostajs/mjs-unit/bin/cli.mjs test-scripts/*.test.mjs
|
|
|
111
111
|
sort en code 1 avec un message. Le compte s'imprime : « ✓ N/N test(s) exécutés sur F fichier(s) ».
|
|
112
112
|
- Le resolver n'agit que sur les specifiers RELATIFS sans extension ; les packages (bare) passent normalement.
|
|
113
113
|
|
|
114
|
+
## S1P (0.12.0)
|
|
115
|
+
S1P — « suite une fois, en parallèle » (règle DEVRULES-S1P du 04/11/2026, premier usage : Guerway, 371 essais).
|
|
116
|
+
|
|
117
|
+
- **`--jobs=N`** (ou `--jobs` / `--jobs=auto` : nombre de processeurs, 4 au plus) : les fichiers sont répartis en N lots de
|
|
118
|
+
durée voisine (durées du rapport `--json` précédent), un processus par lot, puis réunis en UN rapport ; le total
|
|
119
|
+
exécuté reste vérifié contre le total déclaré. Une chaîne de fichiers marquée `// mjs-unit:lot <nom>` reste dans un même lot.
|
|
120
|
+
- **Le bloc `execution` du rapport JSON** (et une ligne ⏱ en sortie et dans le HTML) : mode, lots, durée réelle,
|
|
121
|
+
somme des durées des essais, gain, détail de chaque lot, espace, jeux de données, empreinte.
|
|
122
|
+
- **L'espace propre** : chaque suite a son `TMPDIR` dédié (un sous-espace par lot) ; ce que chaque fichier d'essai y laisse
|
|
123
|
+
est relevé (bases SQLite reconnues à leur en-tête, fichiers, octets), puis l'espace est supprimé, réussite ou échec ;
|
|
124
|
+
`--garder` le conserve pour examen. Fini les bases d'essai laissées dans `/tmp` (constaté : 16 036 dossiers, 26 Go).
|
|
125
|
+
- **`jeu(nom, { pour, construire, detruire })`** : un jeu de données partagé (un compte, puis une autorisation sur ce compte)
|
|
126
|
+
construit au premier `obtenir()`, gardé tant qu'un essai de `pour` n'a pas fini, détruit après le DERNIER ; un essai
|
|
127
|
+
déclaré jamais exécuté est une anomalie relevée.
|
|
128
|
+
- **`mjs-unit rejouer <essai> <fichier...>`** : cet essai seul, dans un espace neuf ; ses jeux de données sont reconstruits.
|
|
129
|
+
- **L'empreinte** de ce qui a été éprouvé (commit, arbre propre, empreinte du `package-lock.json`, Node) au bloc `execution`,
|
|
130
|
+
et **`mjs-unit empreinte --verifier=<rapport.json>`** : code 0 si le rapport vaut encore pour l'arbre courant, sinon les motifs
|
|
131
|
+
(c'est ce qui permet de ne pas rejouer une suite après une fusion `--ff-only`).
|
|
132
|
+
|
|
114
133
|
## CLIENT QATRAX (0.11.0)
|
|
115
134
|
`mjs-unit qatrax etat [--bref] | rapatrier [--tous] | pris <id> [note] | corrige <id> [version] [note] | pousser [plan,run,sbom,sources] [--si-vert]` (sans niveau : plan, run, sbom ; sources sur demande, 0.11.1).
|
|
116
135
|
Config : package.json "qatrax": { projet, url, nom?, plan?, run?, sbom?, defauts?, curseur?, sources? (défaut test-scripts) } ; QATRAX_URL l'emporte ; clé QATRAX_CLE_CI
|
|
@@ -122,3 +141,56 @@ Le cœur (`.`) n'importe pas ce client.
|
|
|
122
141
|
## CONVENTION (écosystème)
|
|
123
142
|
Tout test ET son runner (`run-tests.sh`) sont versionnés dans `test-scripts/` ; `package.json` `scripts.test`
|
|
124
143
|
pointe sur le runner. Jamais de test jetable.
|
|
144
|
+
|
|
145
|
+
## D4Q et D4PF, après la suite (0.13.0)
|
|
146
|
+
|
|
147
|
+
Deux commandes pour ce qui suit une version **intégrée** (suite S1P verte, `main` avancé) ; premier usage : Guerway
|
|
148
|
+
(04/11/2026). L'application décrit ses étapes dans **`d4.config.json`** ; mjs-unit les enchaîne avec les mêmes règles partout.
|
|
149
|
+
|
|
150
|
+
**L'ordre d'une version** : essais rouges → code → suite (`--jobs`, rapport JSON) → intégration S1P
|
|
151
|
+
(`mjs-unit empreinte --verifier`, fusion `--ff-only`) → **`mjs-unit d4q`** → **`mjs-unit d4pf` sur feu vert**.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npx mjs-unit d4q # la qualité : ne déploie RIEN (CAPTURES=0 saute une étape marquée « sauterSi »)
|
|
155
|
+
npx mjs-unit d4q ../worktrees/L2-1.4.0 # sur un autre dossier de l'application (un worktree)
|
|
156
|
+
npx mjs-unit d4pf --a-blanc # contrôles, puis les commandes qui seraient lancées ; rien n'est exécuté
|
|
157
|
+
npx mjs-unit d4pf # SEULEMENT sur feu vert explicite pour CETTE version
|
|
158
|
+
npx mjs-unit d4pfq # D4PF puis D4Q (D4Q seulement si D4PF réussit) — sur feu vert ; --a-blanc aussi
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
#### D4Q — « déploie pour la qualité »
|
|
162
|
+
|
|
163
|
+
Régénère et publie tout ce qui sert à juger la version, dans l'ordre déclaré (chez Guerway : cahier des écrans, feuilles
|
|
164
|
+
de recette par rôle, feuilles de formation, plan Dev+Test, avancement, chiffrage, `mjs-unit qatrax pousser plan,run`).
|
|
165
|
+
|
|
166
|
+
- `exige` : les fichiers sans lesquels D4Q refuse (le rapport de la DERNIÈRE suite : `test-scripts/.out/report.json`) ;
|
|
167
|
+
- chaque étape s'arrête au premier échec, sauf si sa sortie contient son motif `reporterSi` (un quota de service de PDF) :
|
|
168
|
+
elle est alors « reportée » et la suite continue ; `sauterSi: "VAR=valeur"` la saute ;
|
|
169
|
+
- `dossier` : `app` (défaut) ou `racine` (le dossier de `d4.config.json`) ; `lignes` : les dernières lignes montrées.
|
|
170
|
+
|
|
171
|
+
#### D4PF — « déploie pour prod et formation »
|
|
172
|
+
|
|
173
|
+
1. contrôles : la branche (`main`), aucun fichier suivi modifié hors `ignorer` (expressions sur `git status --porcelain`) ;
|
|
174
|
+
2. `sauvegardes` : chaque commande écrit sa copie dans `fichier` ; vide ou sans `entete` (ex. `PGDMP`) → arrêt AVANT
|
|
175
|
+
tout déploiement ;
|
|
176
|
+
3. et 4. `deploiements`, dans l'ordre (production, puis formation) ;
|
|
177
|
+
5. `sante` : chaque commande rend le JSON de `/health` ; `ok`, `version` du package.json ET `commit` de `main` exigés ;
|
|
178
|
+
6. `journaux` : les dernières erreurs, pour lecture (des lignes anciennes ne sont pas une erreur de la version).
|
|
179
|
+
|
|
180
|
+
Règles : aucune valeur du `.env` affichée ; ne pas figer la liste des processus du serveur (pas de `pm2 save`) ; le
|
|
181
|
+
`push` et la publication npm restent hors de D4PF. Jetons des commandes : `{racine}`, `{app}`, `{version}`, `{commit}`, `{date}`.
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"app": "mon-api",
|
|
186
|
+
"d4q": { "exige": ["test-scripts/.out/report.json"], "etapes": [
|
|
187
|
+
{ "titre": "feuilles de recette", "commande": "node outils/feuillets.mjs", "reporterSi": "QUOTA_EXCEEDED" },
|
|
188
|
+
{ "titre": "qatrax", "commande": "npx mjs-unit qatrax pousser plan,run" } ] },
|
|
189
|
+
"d4pf": { "branche": "main", "ignorer": [" \\.env\\.example$"],
|
|
190
|
+
"sauvegardes": [{ "nom": "production", "commande": "ssh serveur 'pg_dump -Fc \"$BASE\"'", "fichier": "sauvegardes/avant-{version}-{date}.dump", "entete": "PGDMP" }],
|
|
191
|
+
"deploiements": [{ "nom": "production", "commande": "bash deploy.sh ./prod.conf" }, { "nom": "formation", "commande": "bash deploy.sh ./formation.conf" }],
|
|
192
|
+
"sante": [{ "nom": "production", "commande": "ssh serveur 'curl -s http://127.0.0.1:5400/health'" }],
|
|
193
|
+
"journaux": "ssh serveur 'tail -n 5 logs/err.log'" }
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/mjs-unit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Micro-framework de test pour l'écosystème @mostajs/* : zéro dépendance, API minimale (test/expect/run), runner CLI (preuves HTML/JSON/JUnit XML via --report/--json/--junit ; compte rendu de validation CRA lié à la SBOM, CTRF, in-toto test-result via --compte-rendu/--ctrf/--intoto ; mode lecteur --depuis : lit le rapport natif de Java, C#, Python, Go, C++… — JUnit XML, NUnit, TRX, TestNG, Robot Framework, CTest, Cucumber JSON, Behave JSON, Allure 2, CTRF, TAP — et en fait le même compte rendu ; lecteurs réutilisables ./lecteurs ; menu en shell mjs-unit-menu), notions JUnit (échec/erreur, classname, crochets, délai, étiquettes, tests paramétrés), reporters réutilisables (./report), et un resolver ESM qui exécute sous Node les dist à imports sans extension (convention moduleResolution=bundler). Depuis 0.11.0 : le client qatrax (mjs-unit qatrax etat|rapatrier|pris|corrige|pousser, @mostajs/mjs-unit/qatrax), hors du cœur.",
|
|
5
5
|
"author": "Dr Hamid MADANI <drmdh@msn.com>",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|