2021-09-19 13:20:31 -07:00

67 lines
1.5 KiB
JavaScript

describe('@jsdoc/util/lib/fs', () => {
const mockFs = require('mock-fs');
const fsUtil = require('../../../lib/fs');
const path = require('path');
afterEach(() => mockFs.restore());
it('has an lsSync method', () => {
expect(fsUtil.lsSync).toBeFunction();
});
describe('lsSync', () => {
beforeEach(() => {
mockFs({
head: {
eyes: '',
ears: '',
mouth: '',
nose: '',
shoulders: {
knees: {
meniscus: '',
toes: {
phalanx: '',
'.big-toe-phalanx': '',
},
},
},
},
});
});
const cwd = process.cwd();
function resolvePaths(files) {
return files.map((f) => path.join(cwd, f)).sort();
}
const allFiles = resolvePaths([
'head/eyes',
'head/ears',
'head/mouth',
'head/nose',
'head/shoulders/knees/meniscus',
'head/shoulders/knees/toes/phalanx',
]);
it('gets all non-hidden files from all levels by default', () => {
const files = fsUtil.lsSync(cwd).sort();
expect(files).toEqual(allFiles);
});
it('limits recursion depth when asked', () => {
const files = fsUtil.lsSync(cwd, { depth: 1 }).sort();
expect(files).toEqual(resolvePaths(['head/eyes', 'head/ears', 'head/mouth', 'head/nose']));
});
it('treats a depth of -1 as infinite', () => {
const files = fsUtil.lsSync('head', { depth: -1 }).sort();
expect(files).toEqual(allFiles);
});
});
});