chore(quality): porter ESLint et la suite de tests unitaires + jobs CI associés
Contexte
État actuel vérifié dans oxa-guidelines (post-milestone 2.0) :
-
eslint.config.js: flat config, périmètrescripts/**/*.jsuniquement (ignorenode_modules/,lib/,guidelines/), règles ciblées (no-undef,no-dupe-keys,no-constant-condition,no-emptyavecallowEmptyCatch,no-unused-vars,no-unreachable,no-useless-return) — pas de preset lourd typeeslint:recommendedcomplet, un set volontairement resserré. -
package.json:devDependenciesfigéeseslint@10.9.1,globals@17.12.0, scripts"test": "node --test"et"lint": "eslint scripts/",package-lock.jsoncommité. - 27 fichiers
*.test.jssousscripts/(répartis dansscripts/lib/,scripts/lib/formatters/,scripts/rules/,scripts/steps/, etscripts/install-guidelines.test.jsà la racine) —node --testles découvre nativement, aucune dépendance à un test runner externe (pas de Jest/Mocha). - CI (
.gitlab-ci.yml) : joblint(stagevalidate,npm ci --prefer-offlinepuisnpm run lint -- --max-warnings 0, cache surpackage-lock.json) et jobunit-tests(stagetest,npm test). Ajouter aussidependency-audit(npm audit --audit-level=high,allow_failure: true, non bloquant car l'endpoint npmjs.org est instable) — présent côté oxa et cohérent avec un portage tel quel.
Point de vigilance
shared/guidelines a déjà un job CI check-structure (stage validate) — à conserver, on ajoute lint/unit-tests/dependency-audit à côté, pas de remplacement.
Objectif
-
eslint.config.js(flat config, scopescripts/**/*.js, règles resserrées listées ci-dessus) -
devDependenciesfigées :eslint@10.9.1,globals@17.12.0,package-lock.jsoncommité -
scripts/lint(eslint scripts/) etscripts/test(node --test) danspackage.json -
Les 27 fichiers *.test.jsdescripts/lib/,scripts/lib/formatters/,scripts/rules/,scripts/steps/portés depuis oxa-guidelines -
Jobs CI lint,unit-tests,dependency-auditajoutés à.gitlab-ci.yml(stagevalidate/test), jobcheck-structureexistant conservé -
npm run lint -- --max-warnings 0etnpm testverts en CI
Dépendances
Dépend de #13 (closed) (structure scripts/lib/ + scripts/steps/ doit exister avant de porter les tests qui les couvrent).