UNPKG

pwd-fs

Version:

Extend the file system the capabilities of declaring the present working directory and recursive execution

96 lines (69 loc) 2.29 kB
import assert from 'node:assert'; import fs from 'node:fs'; import Chance from 'chance'; import { expect } from 'expect'; import { Iframe, fmock, restore } from './__fmock'; import { pfs } from '../src'; describe('symlink(src, use [, options])', () => { const chance = new Chance(); beforeEach(() => { const cwd = process.cwd(); const frame: Iframe = { './tmpdir/tings.txt': { type: 'file', data: chance.string() }, './tmpdir/digest/': { type: 'directory' }, './tmpdir/flexapp': { type: 'symlink', target: `${cwd}/tmpdir/tings.txt` } }; const counter = chance.natural({ max: 7 }); for (let i = 0; i < counter; i++) { frame[`./tmpdir/${i}`] = { type: 'directory' }; } fmock(frame); }); afterEach(() => { restore('./tmpdir'); }); it('Positive: Must be created a symbolic link', async () => { await pfs.symlink('./tmpdir/tings.txt', './tmpdir/linkapp'); const stat = fs.lstatSync('./tmpdir/linkapp'); assert(stat.isSymbolicLink()); }); it('Positive: Must be created a symbolic link for directory', async () => { await pfs.symlink('./tmpdir/digest', './tmpdir/linkapp'); const stat = fs.lstatSync('./tmpdir/linkapp'); assert(stat.isSymbolicLink()); }); it('Negative: Throw if destination already exists', async () => { await expect(async () => { await pfs.symlink('./tmpdir/tings.txt', './tmpdir/flexapp'); }) .rejects .toThrow(); }); it('[sync] Positive: Must be created a symbolic link', () => { pfs.symlink('./tmpdir/tings.txt', './tmpdir/linkapp', { sync: true }); const stat = fs.lstatSync('./tmpdir/linkapp'); assert(stat.isSymbolicLink()); }); it('[sync] Positive: Must be created a symbolic link for directory', () => { pfs.symlink('./tmpdir/digest', './tmpdir/linkapp', { sync: true }); const stat = fs.lstatSync('./tmpdir/linkapp'); assert(stat.isSymbolicLink()); }); it('[sync] Negative: Throw if destination already exists', () => { assert.throws(() => { pfs.symlink('./tmpdir/tings.txt', './tmpdir/flexapp', { sync: true }); }); }); });