UNPKG

rs-runner

Version:

RS is a CLI tool for quickly detecting package.json scripts, and running them.

79 lines (53 loc) 2.18 kB
import * as fs from 'fs'; import { detectRunner, getPackageJsonScripts, removeGlobalScript, addNewGlobalScript } from '../src/lib/rs'; import path from 'path'; jest.mock('fs'); describe('rs library', () => { beforeEach(() => { jest.clearAllMocks(); }); describe('detectRunner', () => { it('should detect npm as runner', () => { (fs.existsSync as jest.Mock).mockImplementation((file) => file === 'package-lock.json'); const result = detectRunner(); expect(result).toBe('npm'); }); it('should detect yarn as runner', () => { (fs.existsSync as jest.Mock).mockImplementation((file) => file === 'yarn.lock'); const result = detectRunner(); expect(result).toBe('yarn'); }); it('should detect pnpm as runner', () => { (fs.existsSync as jest.Mock).mockImplementation((file) => file === 'pnpm-lock.yaml'); const result = detectRunner(); expect(result).toBe('pnpm'); }); it('should detect bun as runner', () => { (fs.existsSync as jest.Mock).mockImplementation((file) => file === 'bun.lockb'); const result = detectRunner(); expect(result).toBe('bun'); // Also test for bun.lock (fs.existsSync as jest.Mock).mockImplementation((file) => file === 'bun.lock'); const result2 = detectRunner(); expect(result2).toBe('bun'); }); it('should return null if no runner detected', () => { (fs.existsSync as jest.Mock).mockReturnValue(false); const result = detectRunner(); expect(result).toBeNull(); }); }); it('should return scripts from package.json', () => { const mockPackageJson = { scripts: { test: 'jest', build: 'tsc', }, }; (fs.existsSync as jest.Mock).mockReturnValue(true); (fs.readFileSync as jest.Mock).mockReturnValue(JSON.stringify(mockPackageJson)); const result = getPackageJsonScripts(); expect(result).toEqual(mockPackageJson.scripts); expect(fs.readFileSync).toHaveBeenCalledWith(path.join(process.cwd(), 'package.json'), 'utf8'); }); });