@mostajs/mjs-unit 0.9.0 → 0.11.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 +48 -0
- package/bin/cli.mjs +63 -10
- package/bin/mjs-unit-menu.sh +17 -7
- package/dist/lecteurs.d.ts +82 -0
- package/dist/lecteurs.d.ts.map +1 -0
- package/dist/lecteurs.js +518 -0
- package/dist/lecteurs.js.map +1 -0
- package/dist/qatrax.d.ts +76 -0
- package/dist/qatrax.d.ts.map +1 -0
- package/dist/qatrax.js +272 -0
- package/dist/qatrax.js.map +1 -0
- package/dist/report.d.ts +10 -0
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +15 -4
- package/dist/report.js.map +1 -1
- package/llms.txt +8 -0
- package/package.json +24 -3
package/dist/qatrax.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** La configuration résolue d'un projet. */
|
|
2
|
+
export interface ConfigQatrax {
|
|
3
|
+
racine: string;
|
|
4
|
+
projet: string;
|
|
5
|
+
nom: string;
|
|
6
|
+
url: string;
|
|
7
|
+
version: string;
|
|
8
|
+
plan: string;
|
|
9
|
+
run: string;
|
|
10
|
+
sbom: string;
|
|
11
|
+
defauts: string;
|
|
12
|
+
curseur: string;
|
|
13
|
+
cle: string;
|
|
14
|
+
avertissements: string[];
|
|
15
|
+
}
|
|
16
|
+
/** Un défaut tel que qatrax le rend (GET /recette/defauts). */
|
|
17
|
+
export interface DefautRecette {
|
|
18
|
+
id: string;
|
|
19
|
+
ref: string;
|
|
20
|
+
gravite: string;
|
|
21
|
+
etat: string;
|
|
22
|
+
titre: string;
|
|
23
|
+
campagnes: string[];
|
|
24
|
+
exigence?: string;
|
|
25
|
+
faire?: string;
|
|
26
|
+
attendu?: string;
|
|
27
|
+
description?: string;
|
|
28
|
+
pieces: Array<{
|
|
29
|
+
id: string;
|
|
30
|
+
nom: string;
|
|
31
|
+
sha256: string;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
/** Une erreur qui porte son code de sortie : 1 refus ou fichier absent, 2 usage ou configuration. */
|
|
35
|
+
export declare class ErreurQatrax extends Error {
|
|
36
|
+
code: 1 | 2;
|
|
37
|
+
constructor(message: string, code?: 1 | 2);
|
|
38
|
+
}
|
|
39
|
+
/** Un nom de fichier sûr : ni chemin, ni caractère exotique (comme defauts-recette.sh). */
|
|
40
|
+
export declare const nomSur: (s: unknown) => string;
|
|
41
|
+
/**
|
|
42
|
+
* Lit la configuration : le bloc « qatrax » du package.json du projet, l'environnement par-dessus (QATRAX_URL), la clé
|
|
43
|
+
* de CI dans QATRAX_CLE_CI, sinon ~/.config/qatrax/cle-ci-<projet> (avertissement si le fichier n'est pas en 600).
|
|
44
|
+
*/
|
|
45
|
+
export declare function configQatrax({ racine, env }?: {
|
|
46
|
+
racine?: string;
|
|
47
|
+
env?: Record<string, string | undefined>;
|
|
48
|
+
}): ConfigQatrax;
|
|
49
|
+
/** Le client d'un projet. Chaque méthode rend des lignes à afficher, ou lève une ErreurQatrax. */
|
|
50
|
+
export declare function creerClientQatrax(c: ConfigQatrax): {
|
|
51
|
+
config: ConfigQatrax;
|
|
52
|
+
/** Le nouveau depuis le dernier passage. Le curseur (identifiant → état et campagnes) est réécrit à chaque fois. */
|
|
53
|
+
etat({ bref }?: {
|
|
54
|
+
bref?: boolean | undefined;
|
|
55
|
+
}): Promise<string[]>;
|
|
56
|
+
/** La fiche des défauts (et, avec tous, l'historique) et leurs pièces, sous c.defauts. */
|
|
57
|
+
rapatrier({ tous }?: {
|
|
58
|
+
tous?: boolean | undefined;
|
|
59
|
+
}): Promise<string[]>;
|
|
60
|
+
/** « pris » (en_cours) ou « corrige » (version : « <projet> <version du package.json> » par défaut). */
|
|
61
|
+
poserEtat(id: string, etat: "en_cours" | "corrige", { version, note }?: {
|
|
62
|
+
version?: string | undefined;
|
|
63
|
+
note?: string | undefined;
|
|
64
|
+
}): Promise<string[]>;
|
|
65
|
+
/** Plan, run, SBOM, dans cet ordre. Un run absent n'est jamais un succès ; siVert refuse un run qui a des échecs. */
|
|
66
|
+
pousser({ niveaux, siVert }?: {
|
|
67
|
+
niveaux?: string[];
|
|
68
|
+
siVert?: boolean;
|
|
69
|
+
}): Promise<string[]>;
|
|
70
|
+
};
|
|
71
|
+
/** La sous-commande du CLI : `mjs-unit qatrax <commande> [arguments]`. Rend le code de sortie. */
|
|
72
|
+
export declare function principal(args: string[], { racine, ecrire }?: {
|
|
73
|
+
racine?: string | undefined;
|
|
74
|
+
ecrire?: ((s: string) => void) | undefined;
|
|
75
|
+
}): Promise<number>;
|
|
76
|
+
//# sourceMappingURL=qatrax.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qatrax.d.ts","sourceRoot":"","sources":["../src/qatrax.ts"],"names":[],"mappings":"AAsBA,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAC1E,GAAG,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;CACvC;AACD,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC1E,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AACD,qGAAqG;AACrG,qBAAa,YAAa,SAAQ,KAAK;IACD,IAAI,EAAE,CAAC,GAAG,CAAC;gBAAnC,OAAO,EAAE,MAAM,EAAS,IAAI,GAAE,CAAC,GAAG,CAAK;CACpD;AAID,2FAA2F;AAC3F,eAAO,MAAM,MAAM,GAAI,GAAG,OAAO,WAA6E,CAAC;AAE/G;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,MAAsB,EAAE,GAAiB,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GAAG,YAAY,CA0B5J;AAOD,kGAAkG;AAClG,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY;;IA4B7C,oHAAoH;;;QACjF,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BpD,0FAA0F;;;QAClD,OAAO,CAAC,MAAM,EAAE,CAAC;IAyCzD,wGAAwG;kBACpF,MAAM,QAAQ,UAAU,GAAG,SAAS;;;QAAqC,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ9G,qHAAqH;kCAChD;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;EA0BzI;AAED,kGAAkG;AAClG,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAsB,EAAE,MAAsC,EAAE;;kBAA3B,MAAM;CAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BxI"}
|
package/dist/qatrax.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mostajs/mjs-unit/qatrax — LE CLIENT QATRAX (0.11.0) : la boucle tests → qatrax → recette → défauts → poste.
|
|
3
|
+
*
|
|
4
|
+
* etat le nouveau depuis le dernier passage (curseur local) : défauts nouveaux, rouverts, corrigés, clos
|
|
5
|
+
* rapatrier la fiche des défauts de recette et leurs pièces (empreintes vérifiées)
|
|
6
|
+
* pris « je le prends » : le défaut passe « en cours » chez qatrax
|
|
7
|
+
* corrige « corrigé dans <version> — à rejouer en recette » (la recette suivante le clôt, ou le rouvre)
|
|
8
|
+
* pousser plan Dev+Test, run, SBOM — dans cet ordre (DEVRULES-QA §4, §5.bis, §4.ter)
|
|
9
|
+
*
|
|
10
|
+
* Remplace les scripts recopiés de projet en projet (push-qatrax-*-prod.sh, outils/pousser-devtest.sh,
|
|
11
|
+
* outils/defauts-recette.sh : docs/13-AUDIT-EXISTANT-CLIENT-QATRAX-27102026.md). Le CŒUR de mjs-unit n'importe pas
|
|
12
|
+
* ce fichier : il reste sans réseau ni secret. La clé de CI ne passe jamais en argument d'un processus, et n'est
|
|
13
|
+
* jamais écrite dans une sortie.
|
|
14
|
+
*
|
|
15
|
+
* @author Dr Hamid MADANI <drmdh@msn.com>
|
|
16
|
+
* @license AGPL-3.0-or-later
|
|
17
|
+
*/
|
|
18
|
+
import { createHash } from "node:crypto";
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
20
|
+
import { homedir } from "node:os";
|
|
21
|
+
import { join, resolve } from "node:path";
|
|
22
|
+
/** Une erreur qui porte son code de sortie : 1 refus ou fichier absent, 2 usage ou configuration. */
|
|
23
|
+
export class ErreurQatrax extends Error {
|
|
24
|
+
constructor(message, code = 1) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.code = code;
|
|
27
|
+
this.name = "ErreurQatrax";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const lireJson = (f) => JSON.parse(readFileSync(f, "utf8"));
|
|
31
|
+
const sha256 = (b) => createHash("sha256").update(b).digest("hex");
|
|
32
|
+
/** Un nom de fichier sûr : ni chemin, ni caractère exotique (comme defauts-recette.sh). */
|
|
33
|
+
export const nomSur = (s) => String(s ?? "").replace(/[^A-Za-z0-9._-]/g, "_").slice(0, 80) || "piece";
|
|
34
|
+
/**
|
|
35
|
+
* Lit la configuration : le bloc « qatrax » du package.json du projet, l'environnement par-dessus (QATRAX_URL), la clé
|
|
36
|
+
* de CI dans QATRAX_CLE_CI, sinon ~/.config/qatrax/cle-ci-<projet> (avertissement si le fichier n'est pas en 600).
|
|
37
|
+
*/
|
|
38
|
+
export function configQatrax({ racine = process.cwd(), env = process.env } = {}) {
|
|
39
|
+
const r = resolve(racine);
|
|
40
|
+
const fpkg = join(r, "package.json");
|
|
41
|
+
if (!existsSync(fpkg))
|
|
42
|
+
throw new ErreurQatrax(`package.json introuvable dans ${r}`, 2);
|
|
43
|
+
const pkg = lireJson(fpkg);
|
|
44
|
+
const q = pkg.qatrax ?? {};
|
|
45
|
+
const projet = String(q.projet ?? "").trim();
|
|
46
|
+
if (!projet)
|
|
47
|
+
throw new ErreurQatrax('bloc « qatrax » absent du package.json : { "qatrax": { "projet": "…", "url": "https://….qatrax.dev" } }', 2);
|
|
48
|
+
const url = String(env.QATRAX_URL || q.url || "").replace(/\/+$/, "");
|
|
49
|
+
if (!/^https?:\/\//.test(url))
|
|
50
|
+
throw new ErreurQatrax(`adresse de qatrax absente ou invalide (qatrax.url ou QATRAX_URL) : « ${url} »`, 2);
|
|
51
|
+
const avertissements = [];
|
|
52
|
+
let cle = String(env.QATRAX_CLE_CI ?? "").trim();
|
|
53
|
+
const fcle = join(env.HOME || homedir(), ".config", "qatrax", `cle-ci-${projet}`);
|
|
54
|
+
if (!cle && existsSync(fcle)) {
|
|
55
|
+
cle = readFileSync(fcle, "utf8").replace(/\s+/g, "");
|
|
56
|
+
const mode = statSync(fcle).mode & 0o777;
|
|
57
|
+
if (mode & 0o077)
|
|
58
|
+
avertissements.push(`⚠ ${fcle} est lisible par d'autres (mode ${mode.toString(8)}) : chmod 600`);
|
|
59
|
+
}
|
|
60
|
+
if (!cle)
|
|
61
|
+
throw new ErreurQatrax(`clé de CI absente : QATRAX_CLE_CI ou ${fcle} (écran « Projets » de ${url}, opération « pousser »)`, 2);
|
|
62
|
+
const chemin = (v, defaut) => resolve(r, String(v || defaut));
|
|
63
|
+
return {
|
|
64
|
+
racine: r, projet, nom: String(q.nom || projet), url, version: String(pkg.version ?? "0.0.0"),
|
|
65
|
+
plan: chemin(q.plan, `docs/DEVTEST-PLAN.${projet}.json`), run: chemin(q.run, "test-scripts/.out/report.json"),
|
|
66
|
+
sbom: chemin(q.sbom, "sbom.cyclonedx.json"), defauts: chemin(q.defauts, "docs/recette/defauts"),
|
|
67
|
+
curseur: chemin(q.curseur, "test-scripts/.out/qatrax-etat.json"), cle, avertissements,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const ETATS = { open: "ouvert", in_progress: "en cours", resolved: "corrigé, à rejouer", closed: "clos (confirmé en recette)", rejected: "rejeté" };
|
|
71
|
+
const GRAVITES = { critical: "bloquant", high: "panne", medium: "écart", low: "mineur" };
|
|
72
|
+
const etatLisible = (e) => ETATS[e] ?? e;
|
|
73
|
+
const graviteLisible = (g) => GRAVITES[g] ?? g;
|
|
74
|
+
/** Le client d'un projet. Chaque méthode rend des lignes à afficher, ou lève une ErreurQatrax. */
|
|
75
|
+
export function creerClientQatrax(c) {
|
|
76
|
+
const entetes = (json = false) => ({ authorization: `Bearer ${c.cle}`, accept: "application/json", ...(json ? { "content-type": "application/json" } : {}) });
|
|
77
|
+
/** Le message d'erreur du serveur, et ses erreurs de validation (jamais la clé : elle n'est pas dans la réponse). */
|
|
78
|
+
async function erreurDe(r, quoi) {
|
|
79
|
+
const texte = await r.text();
|
|
80
|
+
let detail = texte.slice(0, 300);
|
|
81
|
+
try {
|
|
82
|
+
const j = JSON.parse(texte);
|
|
83
|
+
detail = [j.error ?? j.message ?? "", ...(Array.isArray(j.errors) ? j.errors.map((e) => ` ${e.path ?? ""} : ${e.message ?? e}`) : [])].filter(Boolean).join("\n");
|
|
84
|
+
}
|
|
85
|
+
catch { /* corps non JSON : ses premiers caractères */ }
|
|
86
|
+
return new ErreurQatrax(`✗ HTTP ${r.status} — ${quoi} : ${detail}`);
|
|
87
|
+
}
|
|
88
|
+
async function appel(methode, chemin, corps) {
|
|
89
|
+
try {
|
|
90
|
+
return await fetch(`${c.url}${chemin}`, { method: methode, headers: entetes(corps !== undefined), body: corps, signal: AbortSignal.timeout(60000) });
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
throw new ErreurQatrax(`✗ ${c.url} injoignable (${e?.cause?.code ?? e?.name ?? "réseau"})`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async function lireDefauts(tous = false) {
|
|
97
|
+
const r = await appel("GET", `/recette/defauts?p=${encodeURIComponent(c.projet)}${tous ? "&etat=tous" : ""}`);
|
|
98
|
+
if (!r.ok)
|
|
99
|
+
throw await erreurDe(r, `${c.url}/recette/defauts`);
|
|
100
|
+
return (await r.json()).defauts ?? [];
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
config: c,
|
|
104
|
+
/** Le nouveau depuis le dernier passage. Le curseur (identifiant → état et campagnes) est réécrit à chaque fois. */
|
|
105
|
+
async etat({ bref = false } = {}) {
|
|
106
|
+
const ds = await lireDefauts(true);
|
|
107
|
+
const avant = existsSync(c.curseur) ? lireJson(c.curseur).defauts ?? {} : {};
|
|
108
|
+
const nouveaux = [];
|
|
109
|
+
const changes = [];
|
|
110
|
+
for (const d of ds) {
|
|
111
|
+
const a = avant[d.id];
|
|
112
|
+
if (!a) {
|
|
113
|
+
if (d.etat !== "closed")
|
|
114
|
+
nouveaux.push(d);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (a.etat !== d.etat)
|
|
118
|
+
changes.push([d, a.etat === "resolved" && d.etat === "open" ? "rouvert en recette" : `${etatLisible(a.etat)} → ${etatLisible(d.etat)}`]);
|
|
119
|
+
else if ((d.campagnes ?? []).length > (a.campagnes ?? []).length)
|
|
120
|
+
changes.push([d, `relevé de nouveau (campagne ${d.campagnes[d.campagnes.length - 1]})`]);
|
|
121
|
+
}
|
|
122
|
+
mkdirSync(join(c.curseur, ".."), { recursive: true });
|
|
123
|
+
writeFileSync(c.curseur, `${JSON.stringify({ projet: c.projet, vuLe: new Date().toISOString(), defauts: Object.fromEntries(ds.map((d) => [d.id, { etat: d.etat, campagnes: d.campagnes ?? [] }])) }, null, 1)}\n`);
|
|
124
|
+
const ouverts = ds.filter((d) => d.etat === "open" || d.etat === "in_progress").length;
|
|
125
|
+
if (bref) {
|
|
126
|
+
return [!nouveaux.length && !changes.length
|
|
127
|
+
? `qatrax ${c.projet} : rien de nouveau en recette (${ouverts} ouvert(s))`
|
|
128
|
+
: `qatrax ${c.projet} : ${nouveaux.length} nouveau(x), ${changes.length} changé(s) en recette — mjs-unit qatrax rapatrier`];
|
|
129
|
+
}
|
|
130
|
+
if (!nouveaux.length && !changes.length)
|
|
131
|
+
return [`✓ ${c.nom} (${c.url}) : aucun changement en recette depuis le dernier passage — ${ouverts} défaut(s) ouvert(s)`];
|
|
132
|
+
return [
|
|
133
|
+
`${c.nom} (${c.url}) : ${nouveaux.length} nouveau(x), ${changes.length} changé(s)`,
|
|
134
|
+
...nouveaux.map((d) => ` + ${d.ref.padEnd(8)} ${graviteLisible(d.gravite).padEnd(9)} ${d.titre.slice(0, 80)}`),
|
|
135
|
+
...changes.map(([d, quoi]) => ` ~ ${d.ref.padEnd(8)} ${quoi} — ${d.titre.slice(0, 60)}`),
|
|
136
|
+
" → mjs-unit qatrax rapatrier",
|
|
137
|
+
];
|
|
138
|
+
},
|
|
139
|
+
/** La fiche des défauts (et, avec tous, l'historique) et leurs pièces, sous c.defauts. */
|
|
140
|
+
async rapatrier({ tous = false } = {}) {
|
|
141
|
+
const ds = await lireDefauts(tous);
|
|
142
|
+
const lignes = [];
|
|
143
|
+
mkdirSync(c.defauts, { recursive: true });
|
|
144
|
+
for (const d of ds)
|
|
145
|
+
for (const p of d.pieces ?? []) {
|
|
146
|
+
const dossier = join(c.defauts, nomSur(d.ref));
|
|
147
|
+
mkdirSync(dossier, { recursive: true });
|
|
148
|
+
const r = await appel("GET", `/recette/defauts/piece?p=${encodeURIComponent(c.projet)}&id=${encodeURIComponent(p.id)}`);
|
|
149
|
+
if (!r.ok) {
|
|
150
|
+
lignes.push(` ⚠ pièce ${p.nom} (HTTP ${r.status})`);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const octets = Buffer.from(await r.arrayBuffer());
|
|
154
|
+
writeFileSync(join(dossier, nomSur(p.nom)), octets);
|
|
155
|
+
if (sha256(octets) !== p.sha256)
|
|
156
|
+
lignes.push(` ⚠ pièce ${p.nom} : empreinte différente de celle signée par ValiTrax`);
|
|
157
|
+
}
|
|
158
|
+
const plan = existsSync(c.plan) ? lireJson(c.plan) : { specs: [], tests: [] };
|
|
159
|
+
const specs = Object.fromEntries((plan.specs ?? []).map((s) => [s.ref, s.title]));
|
|
160
|
+
const essais = Object.fromEntries((plan.tests ?? []).map((t) => [t.ref, t]));
|
|
161
|
+
const L = [`# Défauts relevés en recette — ${c.nom}`, "",
|
|
162
|
+
"**Auteur** : Dr Hamid MADANI <drmdh@msn.com> ",
|
|
163
|
+
`**Source** : ${c.url}/recette/defauts?p=${c.projet} — rapatrié le ${new Date().toLocaleString("fr-FR", { dateStyle: "short", timeStyle: "short" })} `,
|
|
164
|
+
"**Boucle** : qatrax (spec→dev→test) → ValiTrax (recette→défaut) → qatrax → poste du développeur → recette suivante", "",
|
|
165
|
+
`${ds.length} défaut(s). Fiche ENGENDRÉE par \`mjs-unit qatrax rapatrier\` : ne pas la modifier à la main. Les pièces`,
|
|
166
|
+
"appartiennent à qatrax, qui en garde l'original pour la validation finale et le suivi des bugs : copie de travail.", "",
|
|
167
|
+
"Pour chaque défaut : `mjs-unit qatrax pris <id>` en commençant, réparer, ajouter ou ajuster l'essai qui le couvre,",
|
|
168
|
+
"livrer, puis `mjs-unit qatrax corrige <id> [version]`. La recette suivante le clôt (ligne rejouée ok) ou le rouvre (ko).", "",
|
|
169
|
+
"| réf. | gravité | état | campagnes | titre |", "|---|---|---|---|---|",
|
|
170
|
+
...ds.map((d) => `| [${d.ref}](#${nomSur(d.ref).toLowerCase()}) | ${graviteLisible(d.gravite)} | ${etatLisible(d.etat)} | ${(d.campagnes ?? []).join(", ")} | ${d.titre.replace(/\|/g, "/")} |`)];
|
|
171
|
+
for (const d of ds) {
|
|
172
|
+
const e = essais[d.ref];
|
|
173
|
+
L.push("", `## ${d.ref}`, "", `- **id** : \`${d.id}\``, `- **état** : ${etatLisible(d.etat)} · **gravité** : ${graviteLisible(d.gravite)} · **campagnes** : ${(d.campagnes ?? []).join(", ") || "—"}`, `- **exigence** : ${d.exigence || "—"}${d.exigence && specs[d.exigence] ? ` — ${specs[d.exigence]}` : ""}`, `- **essai du plan** : ${d.ref}${e ? ` — ${e.title ?? ""}` : " (absent du plan Dev+Test)"}`, `- **à faire** : ${d.faire || "—"}`, `- **attendu** : ${d.attendu || "—"}`);
|
|
174
|
+
if (d.pieces?.length)
|
|
175
|
+
L.push(`- **pièces** : ${d.pieces.map((p) => `[${p.nom}](${nomSur(d.ref)}/${nomSur(p.nom)})`).join(", ")}`);
|
|
176
|
+
L.push("", "```text", String(d.description ?? "").trim(), "```", "", `\`mjs-unit qatrax pris ${d.id}\` · \`mjs-unit qatrax corrige ${d.id}\``);
|
|
177
|
+
}
|
|
178
|
+
const fiche = join(c.defauts, "DEFAUTS-RECETTE.md");
|
|
179
|
+
writeFileSync(fiche, `${L.join("\n")}\n`);
|
|
180
|
+
return [`✓ ${ds.length} défaut(s) — ${fiche}`, ...lignes,
|
|
181
|
+
...ds.map((d) => ` ${d.ref.padEnd(8)} ${graviteLisible(d.gravite).padEnd(9)} ${etatLisible(d.etat).padEnd(22)} ${d.id} ${d.titre.slice(0, 70)}`)];
|
|
182
|
+
},
|
|
183
|
+
/** « pris » (en_cours) ou « corrige » (version : « <projet> <version du package.json> » par défaut). */
|
|
184
|
+
async poserEtat(id, etat, { version = "", note = "" } = {}) {
|
|
185
|
+
if (!id)
|
|
186
|
+
throw new ErreurQatrax(`usage : mjs-unit qatrax ${etat === "corrige" ? "corrige <id> [version] [note]" : "pris <id> [note]"}`, 2);
|
|
187
|
+
const v = etat === "corrige" ? (version || `${c.projet} ${c.version}`) : "";
|
|
188
|
+
const r = await appel("POST", `/recette/defauts/etat?p=${encodeURIComponent(c.projet)}`, JSON.stringify({ id, etat, version: v, note }));
|
|
189
|
+
if (!r.ok)
|
|
190
|
+
throw await erreurDe(r, "état du défaut");
|
|
191
|
+
return [etat === "corrige" ? `✓ ${id} : corrigé dans ${v} — à rejouer en recette` : `✓ ${id} : en cours`];
|
|
192
|
+
},
|
|
193
|
+
/** Plan, run, SBOM, dans cet ordre. Un run absent n'est jamais un succès ; siVert refuse un run qui a des échecs. */
|
|
194
|
+
async pousser({ niveaux = ["plan", "run", "sbom"], siVert = false } = {}) {
|
|
195
|
+
const inconnus = niveaux.filter((n) => !["plan", "run", "sbom"].includes(n));
|
|
196
|
+
if (inconnus.length)
|
|
197
|
+
throw new ErreurQatrax(`niveau inconnu : ${inconnus.join(", ")} (attendus : plan, run, sbom)`, 2);
|
|
198
|
+
const a = (n) => niveaux.includes(n);
|
|
199
|
+
if (a("plan") && !existsSync(c.plan))
|
|
200
|
+
throw new ErreurQatrax(`✗ plan absent : ${c.plan}`);
|
|
201
|
+
if ((a("run") || siVert) && !existsSync(c.run))
|
|
202
|
+
throw new ErreurQatrax(`✗ aucun rapport d'exécution (${c.run}) : lancer d'abord npm test`);
|
|
203
|
+
if (a("sbom") && !existsSync(c.sbom))
|
|
204
|
+
throw new ErreurQatrax(`✗ SBOM absente (${c.sbom}) : npx -y -p @mostajs/mjs-sbom mjs-sbom --version=${c.version}`);
|
|
205
|
+
if (siVert) {
|
|
206
|
+
const s = lireJson(c.run).summary ?? {};
|
|
207
|
+
if (Number(s.failed) > 0)
|
|
208
|
+
throw new ErreurQatrax(`✗ ${s.failed} échec(s) au dernier run : rien n'est poussé (--si-vert)`);
|
|
209
|
+
}
|
|
210
|
+
const envois = [];
|
|
211
|
+
if (a("plan"))
|
|
212
|
+
envois.push(["plan Dev+Test", "/import", c.plan]);
|
|
213
|
+
if (a("run"))
|
|
214
|
+
envois.push(["exécutions", `/runs?p=${encodeURIComponent(c.projet)}`, c.run]);
|
|
215
|
+
if (a("sbom"))
|
|
216
|
+
envois.push([`SBOM ${c.projet} ${c.version}`, `/sbom?p=${encodeURIComponent(c.projet)}&version=${encodeURIComponent(c.version)}`, c.sbom]);
|
|
217
|
+
const lignes = [];
|
|
218
|
+
for (const [quoi, route, fichier] of envois) {
|
|
219
|
+
const r = await appel("POST", route, readFileSync(fichier, "utf8"));
|
|
220
|
+
if (!r.ok)
|
|
221
|
+
throw new ErreurQatrax([...lignes, (await erreurDe(r, quoi)).message].join("\n"));
|
|
222
|
+
const j = await r.json().catch(() => ({}));
|
|
223
|
+
const resume = j.report?.counts ? ` — ${j.report.counts.pass ?? 0} ok, ${j.report.counts.fail ?? 0} échec(s)` : j.revision ? ` — révision ${j.revision}` : "";
|
|
224
|
+
lignes.push(`✓ HTTP ${r.status} — ${quoi} (${c.url}${route.split("?")[0]})${resume}`);
|
|
225
|
+
}
|
|
226
|
+
return lignes;
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/** La sous-commande du CLI : `mjs-unit qatrax <commande> [arguments]`. Rend le code de sortie. */
|
|
231
|
+
export async function principal(args, { racine = process.cwd(), ecrire = (s) => console.log(s) } = {}) {
|
|
232
|
+
const [cmd = "aide", ...reste] = args;
|
|
233
|
+
const options = reste.filter((x) => x.startsWith("--"));
|
|
234
|
+
const pos = reste.filter((x) => !x.startsWith("--"));
|
|
235
|
+
if (cmd === "aide" || cmd === "--help" || cmd === "-h") {
|
|
236
|
+
ecrire(["usage : mjs-unit qatrax <commande>",
|
|
237
|
+
" etat [--bref] le nouveau en recette depuis le dernier passage",
|
|
238
|
+
" rapatrier [--tous] fiche des défauts + pièces → docs/recette/defauts/",
|
|
239
|
+
" pris <id> [note] le défaut passe « en cours »",
|
|
240
|
+
" corrige <id> [version] [note] « corrigé dans <version> — à rejouer »",
|
|
241
|
+
" pousser [plan,run,sbom] [--si-vert] plan, run, SBOM (dans cet ordre)",
|
|
242
|
+
'configuration : package.json → "qatrax": { "projet", "url", "nom" } ; QATRAX_URL ; clé QATRAX_CLE_CI ou ~/.config/qatrax/cle-ci-<projet>'].join("\n"));
|
|
243
|
+
return 0;
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
const c = configQatrax({ racine });
|
|
247
|
+
for (const a of c.avertissements)
|
|
248
|
+
ecrire(a);
|
|
249
|
+
const client = creerClientQatrax(c);
|
|
250
|
+
let lignes;
|
|
251
|
+
if (cmd === "etat")
|
|
252
|
+
lignes = await client.etat({ bref: options.includes("--bref") });
|
|
253
|
+
else if (cmd === "rapatrier")
|
|
254
|
+
lignes = await client.rapatrier({ tous: options.includes("--tous") });
|
|
255
|
+
else if (cmd === "pris")
|
|
256
|
+
lignes = await client.poserEtat(pos[0] ?? "", "en_cours", { note: pos[1] ?? "" });
|
|
257
|
+
else if (cmd === "corrige")
|
|
258
|
+
lignes = await client.poserEtat(pos[0] ?? "", "corrige", { version: pos[1] ?? "", note: pos[2] ?? "" });
|
|
259
|
+
else if (cmd === "pousser")
|
|
260
|
+
lignes = await client.pousser({ niveaux: pos.length ? pos.join(",").split(",").filter(Boolean) : undefined, siVert: options.includes("--si-vert") });
|
|
261
|
+
else
|
|
262
|
+
throw new ErreurQatrax(`commande inconnue : ${cmd} (mjs-unit qatrax aide)`, 2);
|
|
263
|
+
for (const l of lignes)
|
|
264
|
+
ecrire(l);
|
|
265
|
+
return 0;
|
|
266
|
+
}
|
|
267
|
+
catch (e) {
|
|
268
|
+
ecrire(e instanceof ErreurQatrax ? e.message : `✗ ${e?.message ?? e}`);
|
|
269
|
+
return e instanceof ErreurQatrax ? e.code : 1;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=qatrax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qatrax.js","sourceRoot":"","sources":["../src/qatrax.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
CHANGED
|
@@ -77,7 +77,17 @@ export interface ContexteCompteRendu {
|
|
|
77
77
|
outil: {
|
|
78
78
|
name: string;
|
|
79
79
|
version: string;
|
|
80
|
+
mode?: "lecteur";
|
|
80
81
|
};
|
|
82
|
+
/** 0.10.0 — mode lecteur : les rapports LUS (Java, C#, Python…) et leurs empreintes ; les défauts de lecture */
|
|
83
|
+
lecture?: {
|
|
84
|
+
rapports: {
|
|
85
|
+
fichier: string;
|
|
86
|
+
format: string;
|
|
87
|
+
sha256: string;
|
|
88
|
+
}[];
|
|
89
|
+
defauts?: string[];
|
|
90
|
+
} | null;
|
|
81
91
|
}
|
|
82
92
|
export type StatutCompteRendu = "succes" | "echec" | "erreur" | "ignore";
|
|
83
93
|
export type Verdict = "conforme" | "non conforme" | "incomplet";
|
package/dist/report.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
package/dist/report.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { refDuPlan, rattacherAuPlan } from "./lecteurs.js";
|
|
1
2
|
/**
|
|
2
3
|
* Le `classname` JUnit d'un cas : le chemin du fichier sans extension, en notation pointée, suivi de ses
|
|
3
4
|
* groupes `describe` — `test-scripts/a.test.mjs` + [Groupe] → `test-scripts.a.test.Groupe`.
|
|
@@ -127,11 +128,19 @@ export function construireCompteRendu(report, ctx) {
|
|
|
127
128
|
defauts.push(ctx.sbomErreur ? `SBOM illisible : ${ctx.sbomErreur}` : "SBOM absente : la version éprouvée est inconnue (--sbom)");
|
|
128
129
|
else if (!comp.version)
|
|
129
130
|
defauts.push("SBOM sans version de produit (metadata.component.version)");
|
|
130
|
-
|
|
131
|
+
// 0.10.0 — une référence écrite à la manière de Java, C#, Python (test_T_MOD_01_…) est cherchée dans le plan.
|
|
132
|
+
const refsPlan = (ctx.plan?.contenu?.tests ?? []).map((t) => String(t?.ref ?? "")).filter(Boolean);
|
|
133
|
+
for (const d of ctx.lecture?.defauts ?? [])
|
|
134
|
+
defauts.push(d);
|
|
135
|
+
// 0.10.0 — rattachées au plan AVANT le sceau (référence en tête du nom, fichier de l'autoRef) : qatrax ne réécrit pas
|
|
136
|
+
// un compte rendu scellé, et c'est par `autoRef` qu'il prouve une exigence.
|
|
137
|
+
const autoRefs = (ctx.plan?.contenu?.tests ?? []).map((t) => String(t?.autoRef ?? "")).filter(Boolean);
|
|
138
|
+
const suites = autoRefs.length ? rattacherAuPlan(report.suites, autoRefs) : report.suites;
|
|
139
|
+
const cas = suites.flatMap((s) => s.results.filter((r) => !r.hook).map((r) => ({ r, fichier: s.file })));
|
|
131
140
|
const resultats = cas.map(({ r, fichier }) => {
|
|
132
141
|
const titre = r.title ?? r.name;
|
|
133
142
|
const statut = statutDe(r);
|
|
134
|
-
return { ref: refDe(titre), titre, fichier, statut, dureeMs: Math.round(r.durationMs || 0),
|
|
143
|
+
return { ref: refDe(titre) || (refsPlan.length ? refDuPlan(titre, refsPlan) : ""), titre, fichier, statut, dureeMs: Math.round(r.durationMs || 0),
|
|
135
144
|
...(statut === "ignore" ? { motif: r.skipReason ?? "" } : {}), ...(r.error ? { message: String(r.error).slice(0, 2000) } : {}) };
|
|
136
145
|
});
|
|
137
146
|
for (const x of resultats) {
|
|
@@ -165,6 +174,7 @@ export function construireCompteRendu(report, ctx) {
|
|
|
165
174
|
genereLe: report.generatedAt,
|
|
166
175
|
...(report.title ? { titre: report.title } : {}),
|
|
167
176
|
outil: ctx.outil,
|
|
177
|
+
...(ctx.lecture ? { lecture: { rapports: ctx.lecture.rapports } } : {}),
|
|
168
178
|
produit: { nom: String(comp.name ?? "inconnu"), version: String(comp.version || "inconnue"), purl: String(comp.purl ?? "") },
|
|
169
179
|
sbom: ctx.sbom ? { fichier: ctx.sbom.fichier, serialNumber: String(sb?.serialNumber ?? ""), revision: Number(sb?.version) || 1, sha256: ctx.sbom.sha256 } : null,
|
|
170
180
|
source: { publication: prop("mostajs:publication"), etiquette: prop("mostajs:git:tag"), commit: prop("mostajs:git:commit") },
|
|
@@ -175,7 +185,7 @@ export function construireCompteRendu(report, ctx) {
|
|
|
175
185
|
synthese,
|
|
176
186
|
defauts,
|
|
177
187
|
// Les suites au format du rapport JSON : le compte rendu reste lisible par qatrax.dev (qa-engine) tel quel.
|
|
178
|
-
suites
|
|
188
|
+
suites,
|
|
179
189
|
};
|
|
180
190
|
}
|
|
181
191
|
/** Export CTRF (Common Test Report Format) d'un compte rendu. */
|
|
@@ -204,7 +214,8 @@ export function renderInTotoTestResult(cr) {
|
|
|
204
214
|
predicateType: "https://in-toto.io/attestation/test-result/v0.1",
|
|
205
215
|
predicate: {
|
|
206
216
|
result,
|
|
207
|
-
configuration: [...(cr.plan ? [{ name: cr.plan.fichier, digest: { sha256: cr.plan.sha256 } }] : []), ...(cr.scripts ?? []).map((s) => ({ name: s.fichier, digest: { sha256: s.sha256 } }))
|
|
217
|
+
configuration: [...(cr.plan ? [{ name: cr.plan.fichier, digest: { sha256: cr.plan.sha256 } }] : []), ...(cr.scripts ?? []).map((s) => ({ name: s.fichier, digest: { sha256: s.sha256 } })),
|
|
218
|
+
...(cr.lecture?.rapports ?? []).map((r) => ({ name: r.fichier, digest: { sha256: r.sha256 } }))],
|
|
208
219
|
...(cr.environnement?.ci ? { url: cr.environnement.ci } : {}),
|
|
209
220
|
passedTests: noms((x) => x.statut === "succes"),
|
|
210
221
|
warnedTests: noms((x) => x.statut === "ignore"),
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
package/llms.txt
CHANGED
|
@@ -111,6 +111,14 @@ 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
|
+
## CLIENT QATRAX (0.11.0)
|
|
115
|
+
`mjs-unit qatrax etat [--bref] | rapatrier [--tous] | pris <id> [note] | corrige <id> [version] [note] | pousser [plan,run,sbom] [--si-vert]`.
|
|
116
|
+
Config : package.json "qatrax": { projet, url, nom?, plan?, run?, sbom?, defauts?, curseur? } ; QATRAX_URL l'emporte ; clé QATRAX_CLE_CI
|
|
117
|
+
ou ~/.config/qatrax/cle-ci-<projet> (600). Codes : 0 ok, 1 refus/fichier absent, 2 usage/config. API : `@mostajs/mjs-unit/qatrax`
|
|
118
|
+
→ configQatrax({ racine, env }), creerClientQatrax(c) → { etat, rapatrier, poserEtat(id, 'en_cours'|'corrige', { version, note }), pousser({ niveaux, siVert }) }.
|
|
119
|
+
Routes qatrax : GET /recette/defauts?p=, GET /recette/defauts/piece?p=&id=, POST /recette/defauts/etat?p=, POST /import, /runs?p=, /sbom?p=&version=.
|
|
120
|
+
Le cœur (`.`) n'importe pas ce client.
|
|
121
|
+
|
|
114
122
|
## CONVENTION (écosystème)
|
|
115
123
|
Tout test ET son runner (`run-tests.sh`) sont versionnés dans `test-scripts/` ; `package.json` `scripts.test`
|
|
116
124
|
pointe sur le runner. Jamais de test jetable.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/mjs-unit",
|
|
3
|
-
"version": "0.
|
|
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 ; 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).",
|
|
3
|
+
"version": "0.11.0",
|
|
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",
|
|
7
7
|
"type": "module",
|
|
@@ -27,6 +27,16 @@
|
|
|
27
27
|
"import": "./dist/report.js",
|
|
28
28
|
"default": "./dist/report.js"
|
|
29
29
|
},
|
|
30
|
+
"./lecteurs": {
|
|
31
|
+
"types": "./dist/lecteurs.d.ts",
|
|
32
|
+
"import": "./dist/lecteurs.js",
|
|
33
|
+
"default": "./dist/lecteurs.js"
|
|
34
|
+
},
|
|
35
|
+
"./qatrax": {
|
|
36
|
+
"types": "./dist/qatrax.d.ts",
|
|
37
|
+
"import": "./dist/qatrax.js",
|
|
38
|
+
"default": "./dist/qatrax.js"
|
|
39
|
+
},
|
|
30
40
|
"./register": {
|
|
31
41
|
"default": "./register.mjs"
|
|
32
42
|
},
|
|
@@ -58,7 +68,18 @@
|
|
|
58
68
|
"esm",
|
|
59
69
|
"bundler",
|
|
60
70
|
"zero-dependency",
|
|
61
|
-
"mostajs"
|
|
71
|
+
"mostajs",
|
|
72
|
+
"nunit",
|
|
73
|
+
"trx",
|
|
74
|
+
"testng",
|
|
75
|
+
"robot-framework",
|
|
76
|
+
"cucumber",
|
|
77
|
+
"behave",
|
|
78
|
+
"allure",
|
|
79
|
+
"ctest",
|
|
80
|
+
"junit",
|
|
81
|
+
"qatrax",
|
|
82
|
+
"recette"
|
|
62
83
|
],
|
|
63
84
|
"mostajs": {
|
|
64
85
|
"niveau": "N0",
|