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'); }); });