1b939fa09SCedric van Puttenimport { vol } from 'memfs'; 2b939fa09SCedric van Puttenimport path from 'path'; 3b939fa09SCedric van Putten 4*8d3f3824SCedric van Puttenimport { findPnpmWorkspaceRoot, PNPM_WORKSPACE_FILE } from '../nodeWorkspaces'; 5b939fa09SCedric van Putten 6*8d3f3824SCedric van Puttenjest.mock('@expo/spawn-async'); 7b939fa09SCedric van Puttenjest.mock('fs'); 8*8d3f3824SCedric van Puttenjest.mock('path', () => jest.requireActual('path').posix); // Make tests run on Windows 9b939fa09SCedric van Putten 10*8d3f3824SCedric van Puttendescribe(findPnpmWorkspaceRoot, () => { 11*8d3f3824SCedric van Putten const workspaceRoot = '/monorepo'; 12*8d3f3824SCedric van Putten const projectRoot = '/monorepo/packages/test'; 13b939fa09SCedric van Putten 14b939fa09SCedric van Putten afterEach(() => vol.reset()); 15b939fa09SCedric van Putten 16*8d3f3824SCedric van Putten it('resolves root from project', () => { 17b939fa09SCedric van Putten vol.fromJSON( 18b939fa09SCedric van Putten { 19*8d3f3824SCedric van Putten 'package.json': JSON.stringify({ private: true, name: '@acme/monorepo' }), 20*8d3f3824SCedric van Putten [PNPM_WORKSPACE_FILE]: 'packages:\n - packages/*', 21*8d3f3824SCedric van Putten [path.join(projectRoot, 'package.json')]: JSON.stringify({ name: '@acme/test' }), 22b939fa09SCedric van Putten }, 23b939fa09SCedric van Putten workspaceRoot 24b939fa09SCedric van Putten ); 25b939fa09SCedric van Putten 26*8d3f3824SCedric van Putten expect(findPnpmWorkspaceRoot(projectRoot)).toBe(workspaceRoot); 27b939fa09SCedric van Putten }); 28b939fa09SCedric van Putten 29*8d3f3824SCedric van Putten it('resolves root from workspace', () => { 30b939fa09SCedric van Putten vol.fromJSON( 31b939fa09SCedric van Putten { 32*8d3f3824SCedric van Putten 'package.json': JSON.stringify({ private: true, name: '@acme/monorepo' }), 33*8d3f3824SCedric van Putten [PNPM_WORKSPACE_FILE]: 'packages:\n - packages/*', 34*8d3f3824SCedric van Putten [path.join(projectRoot, 'package.json')]: JSON.stringify({ name: '@acme/test' }), 35b939fa09SCedric van Putten }, 36b939fa09SCedric van Putten workspaceRoot 37b939fa09SCedric van Putten ); 38b939fa09SCedric van Putten 39*8d3f3824SCedric van Putten expect(findPnpmWorkspaceRoot(workspaceRoot)).toBe(workspaceRoot); 40b939fa09SCedric van Putten }); 41b939fa09SCedric van Putten 42*8d3f3824SCedric van Putten it('ignores root from uncoupled project', () => { 43b939fa09SCedric van Putten vol.fromJSON( 44b939fa09SCedric van Putten { 45*8d3f3824SCedric van Putten 'package.json': JSON.stringify({ private: true, name: '@acme/monorepo' }), 46*8d3f3824SCedric van Putten [PNPM_WORKSPACE_FILE]: 'packages:\n - packages-not-included/*', 47*8d3f3824SCedric van Putten [path.join(projectRoot, 'package.json')]: JSON.stringify({ name: '@acme/test' }), 48b939fa09SCedric van Putten }, 49b939fa09SCedric van Putten workspaceRoot 50b939fa09SCedric van Putten ); 51b939fa09SCedric van Putten 52*8d3f3824SCedric van Putten expect(findPnpmWorkspaceRoot(projectRoot)).toBeNull(); 53b939fa09SCedric van Putten }); 54b939fa09SCedric van Putten}); 55