51 lines
2.1 KiB
JavaScript
51 lines
2.1 KiB
JavaScript
|
|
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
||
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
||
|
|
|
||
|
|
// Chaque mode que pose un script npm (« --mode … » dans package.json) a son
|
||
|
|
// libellé de provenance, comme le mode test que pose Vitest ; un mode sans
|
||
|
|
// libellé s'affiche sous son propre nom plutôt que de laisser le bandeau muet
|
||
|
|
// sur la provenance.
|
||
|
|
import assert from 'node:assert/strict';
|
||
|
|
import { readFileSync } from 'node:fs';
|
||
|
|
import { describe, test } from '../../test/lanceur.js';
|
||
|
|
import { aUnLibelle, libelleProvenance, titreAvecVersion } from './libelles.js';
|
||
|
|
|
||
|
|
// Modes nommés par les scripts de package.json, triés, sans doublon.
|
||
|
|
function modesDesScripts() {
|
||
|
|
const paquet = JSON.parse(
|
||
|
|
readFileSync(new URL('../../package.json', import.meta.url), 'utf8'),
|
||
|
|
);
|
||
|
|
const modes = new Set();
|
||
|
|
for (const commande of Object.values(paquet.scripts)) {
|
||
|
|
for (const [, mode] of commande.matchAll(/--mode[= ](\S+)/g)) {
|
||
|
|
modes.add(mode);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return [...modes].sort();
|
||
|
|
}
|
||
|
|
|
||
|
|
describe('libellés', () => {
|
||
|
|
test('libelleProvenance nomme les quatre modes de construction', () => {
|
||
|
|
assert.equal(libelleProvenance('developpement'), 'développement');
|
||
|
|
assert.equal(libelleProvenance('livraison'), 'livraison');
|
||
|
|
assert.equal(libelleProvenance('documentation'), 'documentation');
|
||
|
|
assert.equal(libelleProvenance('test'), 'épreuve');
|
||
|
|
});
|
||
|
|
|
||
|
|
test('chaque mode que pose un script npm a un libellé de provenance', () => {
|
||
|
|
const modes = modesDesScripts();
|
||
|
|
assert.ok(modes.length > 0, 'aucun « --mode » dans les scripts de package.json');
|
||
|
|
assert.deepEqual(modes.filter((mode) => !aUnLibelle(mode)), []);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('libelleProvenance rend un mode sans libellé sous son propre nom', () => {
|
||
|
|
assert.equal(libelleProvenance('production'), 'production');
|
||
|
|
assert.equal(libelleProvenance('constructor'), 'constructor');
|
||
|
|
assert.equal(aUnLibelle('constructor'), false);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('titreAvecVersion joint le nom et la version par un tiret cadratin', () => {
|
||
|
|
assert.equal(titreAvecVersion('X'), 'Gestion table tournante Libre — X');
|
||
|
|
});
|
||
|
|
});
|