File: //usr/share/nodejs/fast-glob/out/index.spec.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const assert = require("assert");
const tests = require("./tests");
const fg = require(".");
describe('Package', () => {
describe('.sync', () => {
it('should throw an error when input values can not pass validation', () => {
const message = 'Patterns must be a string (non empty) or an array of strings';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
assert.throws(() => fg.sync(null), { message });
assert.throws(() => fg.sync(''), { message });
});
it('should returns entries', () => {
const expected = [
'fixtures/file.md',
'fixtures/first/file.md',
'fixtures/first/nested/directory/file.md',
'fixtures/first/nested/file.md',
'fixtures/second/file.md',
'fixtures/second/nested/directory/file.md',
'fixtures/second/nested/file.md'
];
const actual = fg.sync(['fixtures/**/*.md']);
actual.sort((a, b) => a.localeCompare(b));
assert.deepStrictEqual(actual, expected);
});
it('should returns entries (two sources)', () => {
const expected = [
'fixtures/first/file.md',
'fixtures/first/nested/directory/file.md',
'fixtures/first/nested/file.md',
'fixtures/second/file.md',
'fixtures/second/nested/directory/file.md',
'fixtures/second/nested/file.md'
];
const actual = fg.sync(['fixtures/first/**/*.md', 'fixtures/second/**/*.md']);
actual.sort((a, b) => a.localeCompare(b));
assert.deepStrictEqual(actual, expected);
});
});
describe('.async', () => {
it('should throw an error when input values can not pass validation', async () => {
const message = 'Patterns must be a string (non empty) or an array of strings';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
await assert.rejects(() => fg(null), { message });
await assert.rejects(() => fg(''), { message });
});
it('should returns entries', async () => {
const expected = [
'fixtures/file.md',
'fixtures/first/file.md',
'fixtures/first/nested/directory/file.md',
'fixtures/first/nested/file.md',
'fixtures/second/file.md',
'fixtures/second/nested/directory/file.md',
'fixtures/second/nested/file.md'
];
const actual = await fg(['fixtures/**/*.md']);
actual.sort((a, b) => a.localeCompare(b));
assert.deepStrictEqual(actual, expected);
});
it('should returns entries (two sources)', async () => {
const expected = [
'fixtures/first/file.md',
'fixtures/first/nested/directory/file.md',
'fixtures/first/nested/file.md',
'fixtures/second/file.md',
'fixtures/second/nested/directory/file.md',
'fixtures/second/nested/file.md'
];
const actual = await fg(['fixtures/first/**/*.md', 'fixtures/second/**/*.md']);
actual.sort((a, b) => a.localeCompare(b));
assert.deepStrictEqual(actual, expected);
});
});
describe('.stream', () => {
it('should throw an error when input values can not pass validation', () => {
const message = 'Patterns must be a string (non empty) or an array of strings';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
assert.throws(() => fg.stream(null), { message });
assert.throws(() => fg.stream(''), { message });
});
it('should returns entries', (done) => {
const expected = [
'fixtures/file.md',
'fixtures/first/file.md',
'fixtures/first/nested/directory/file.md',
'fixtures/first/nested/file.md',
'fixtures/second/file.md',
'fixtures/second/nested/directory/file.md',
'fixtures/second/nested/file.md'
];
const actual = [];
const stream = fg.stream(['fixtures/**/*.md']);
stream.on('data', (entry) => actual.push(entry));
stream.once('error', (error) => assert.fail(error));
stream.once('end', () => {
actual.sort((a, b) => a.localeCompare(b));
assert.deepStrictEqual(actual, expected);
done();
});
});
it('should returns entries (two sources)', (done) => {
const expected = [
'fixtures/first/file.md',
'fixtures/first/nested/directory/file.md',
'fixtures/first/nested/file.md',
'fixtures/second/file.md',
'fixtures/second/nested/directory/file.md',
'fixtures/second/nested/file.md'
];
const actual = [];
const stream = fg.stream(['fixtures/first/**/*.md', 'fixtures/second/**/*.md']);
stream.on('data', (entry) => actual.push(entry));
stream.once('error', (error) => assert.fail(error));
stream.once('end', () => {
actual.sort((a, b) => a.localeCompare(b));
assert.deepStrictEqual(actual, expected);
done();
});
});
});
describe('.generateTasks', () => {
it('should throw an error when input values can not pass validation', () => {
const message = 'Patterns must be a string (non empty) or an array of strings';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
assert.throws(() => fg.generateTasks(null), { message });
assert.throws(() => fg.generateTasks(''), { message });
});
it('should return tasks', () => {
const expected = [
tests.task.builder().base('.').positive('*').build()
];
const actual = fg.generateTasks(['*']);
assert.deepStrictEqual(actual, expected);
});
it('should return tasks with negative patterns', () => {
const expected = [
tests.task.builder().base('.').positive('*').negative('*.txt').negative('*.md').build()
];
const actual = fg.generateTasks(['*', '!*.txt'], { ignore: ['*.md'] });
assert.deepStrictEqual(actual, expected);
});
});
describe('.isDynamicPattern', () => {
it('should return true for dynamic pattern', () => {
assert.ok(fg.isDynamicPattern('*'));
});
it('should return false for static pattern', () => {
assert.ok(!fg.isDynamicPattern('abc'));
});
});
describe('.escapePath', () => {
it('should return escaped path', () => {
const expected = 'C:/Program Files \\(x86\\)';
const actual = fg.escapePath('C:/Program Files (x86)');
assert.strictEqual(actual, expected);
});
});
});