Le cwd d'une session de groupe devient le PARENT COMMUN des répertoires couverts (racine neutre, chemins relatifs cross-repo naturels) au lieu du premier repo arbitraire ; chaque repo reste relié en --add-dir. Garde-fou : si le parent commun est la racine du FS, on retombe sur le premier répertoire. Nouveau module pur resolveGroupCwd (core/group-session.ts). Côté web, un lancement réussi redirige vers le terminal plein écran de la session, avec un toast (succès ou couverture partielle).
46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
||
import { commonAncestorDir, resolveGroupCwd } from '../src/core/group-session.js';
|
||
|
||
describe('commonAncestorDir', () => {
|
||
it('renvoie le chemin lui-même pour un seul répertoire', () => {
|
||
expect(commonAncestorDir(['/home/johan/WebstormProjects/arboretum'])).toBe('/home/johan/WebstormProjects/arboretum');
|
||
});
|
||
|
||
it('renvoie le parent commun de deux siblings', () => {
|
||
expect(commonAncestorDir(['/p/a', '/p/b'])).toBe('/p');
|
||
});
|
||
|
||
it('gère un répertoire ancêtre d’un autre', () => {
|
||
expect(commonAncestorDir(['/p/a', '/p/a/b'])).toBe('/p/a');
|
||
});
|
||
|
||
it('compare par segments, pas par préfixe de chaîne', () => {
|
||
// /a/bc n'est PAS un ancêtre de /a/bcd : ancêtre commun = /a
|
||
expect(commonAncestorDir(['/a/bc', '/a/bcd'])).toBe('/a');
|
||
});
|
||
|
||
it('renvoie la racine quand aucun segment n’est commun', () => {
|
||
expect(commonAncestorDir(['/x/a', '/y/b'])).toBe('/');
|
||
});
|
||
});
|
||
|
||
describe('resolveGroupCwd', () => {
|
||
it('mono-repo : cwd = le repo, addDirs sera filtré à vide par PtyManager', () => {
|
||
const { cwd, addDirs } = resolveGroupCwd(['/p/a']);
|
||
expect(cwd).toBe('/p/a');
|
||
expect(addDirs).toEqual(['/p/a']);
|
||
});
|
||
|
||
it('multi-repos sous un parent commun : cwd = parent, addDirs = tous les repos', () => {
|
||
const dirs = ['/home/johan/WebstormProjects/beehelp_lambdas', '/home/johan/WebstormProjects/beehelp_api'];
|
||
const { cwd, addDirs } = resolveGroupCwd(dirs);
|
||
expect(cwd).toBe('/home/johan/WebstormProjects');
|
||
expect(addDirs).toEqual(dirs);
|
||
});
|
||
|
||
it('garde-fou : repos sur des racines différentes → retombe sur le premier répertoire', () => {
|
||
const { cwd } = resolveGroupCwd(['/x/a', '/y/b']);
|
||
expect(cwd).toBe('/x/a');
|
||
});
|
||
});
|