UNPKG

@mintlify/previewing

Version:

Preview Mintlify docs locally

31 lines (30 loc) 1.37 kB
import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { acquirePreviewLock } from '../local-preview/preview-lock.js'; describe('acquirePreviewLock', () => { let locksDirectory; beforeEach(() => { locksDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'mint-preview-locks-')); }); afterEach(() => { fs.rmSync(locksDirectory, { recursive: true, force: true }); }); it('prevents two preview instances from mutating the same port workspace', () => { const release = acquirePreviewLock(3000, locksDirectory); expect(() => acquirePreviewLock(3000, locksDirectory)).toThrow('local preview on port 3000 is already starting or running'); release(); }); it('allows the workspace to be reused after release', () => { acquirePreviewLock(3000, locksDirectory)(); const release = acquirePreviewLock(3000, locksDirectory); expect(fs.existsSync(path.join(locksDirectory, '3000.lock'))).toBe(true); release(); }); it('recovers a stale lock', () => { fs.writeFileSync(path.join(locksDirectory, '3000.lock'), JSON.stringify({ pid: -1, token: 'stale' })); const release = acquirePreviewLock(3000, locksDirectory); expect(fs.existsSync(path.join(locksDirectory, '3000.lock'))).toBe(true); release(); }); });