6ca1e4b2cf
Partage d'ecran : premier mot et 3 derniers caracteres visibles (ssh ••••.11), dans le panneau et la recherche rapide. Filtre, copie et remplissage gardent le vrai texte. Aide de la recherche rapide adaptee aux commandes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
// Decoupe d'une note de commandes (js/app.js parseCommandNote).
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { loadApp } = require('./harness.js');
|
|
|
|
const T = loadApp().__test;
|
|
const plain = (x) => JSON.parse(JSON.stringify(x));
|
|
|
|
test('groupes "# titre", une commande par ligne, lignes vides ignorees', () => {
|
|
const r = T.parseCommandNote('# Prod\r\nssh a@1\n\n ssh a@2 \n# Base\npsql -h x\n');
|
|
assert.deepEqual(plain(r), [
|
|
{ group: 'Prod', cmd: 'ssh a@1' },
|
|
{ group: 'Prod', cmd: 'ssh a@2' },
|
|
{ group: 'Base', cmd: 'psql -h x' },
|
|
]);
|
|
});
|
|
|
|
test('commandes avant tout titre : groupe vide', () => {
|
|
assert.equal(T.parseCommandNote('ls -la\n# G\npwd')[0].group, '');
|
|
});
|
|
|
|
test('"## titre" et "#" seul', () => {
|
|
const r = T.parseCommandNote('## Deux\na\n#\nb');
|
|
assert.equal(r[0].group, 'Deux');
|
|
assert.equal(r[1].group, '');
|
|
});
|
|
|
|
test('masque : premier mot, milieu masque, 3 derniers caracteres', () => {
|
|
assert.equal(T.maskCommand('ssh admin@10.0.0.11'), 'ssh ' + '•'.repeat(12) + '.11');
|
|
assert.equal(T.maskCommand('psql -h 10.0.0.20'), 'psql ' + '•'.repeat(9) + '.20');
|
|
});
|
|
|
|
test('masque : fin courte masquee en entier, pas d\'espace', () => {
|
|
assert.equal(T.maskCommand('ls -la'), 'ls •••');
|
|
assert.equal(T.maskCommand('hostname'), '•••••ame');
|
|
assert.equal(T.maskCommand(''), '');
|
|
});
|
|
|
|
test('texte vide ou absent', () => {
|
|
assert.equal(T.parseCommandNote('').length, 0);
|
|
assert.equal(T.parseCommandNote(null).length, 0);
|
|
});
|