100 lines
4 KiB
JavaScript
100 lines
4 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const assert = require("assert");
|
||
|
const fs = require("fs");
|
||
|
const rimraf = require("rimraf");
|
||
|
const _1 = require(".");
|
||
|
const entryFilter = (entry) => !entry.dirent.isDirectory();
|
||
|
function streamToPromise(stream) {
|
||
|
const entries = [];
|
||
|
return new Promise((resolve, reject) => {
|
||
|
stream.on('data', (entry) => entries.push(entry));
|
||
|
stream.once('error', reject);
|
||
|
stream.once('end', () => resolve(entries));
|
||
|
});
|
||
|
}
|
||
|
describe('Package', () => {
|
||
|
before(() => {
|
||
|
rimraf.sync('fixtures');
|
||
|
fs.mkdirSync('fixtures');
|
||
|
fs.writeFileSync('fixtures/file.txt', '');
|
||
|
fs.mkdirSync('fixtures/nested');
|
||
|
fs.writeFileSync('fixtures/nested/file.txt', '');
|
||
|
});
|
||
|
after(() => {
|
||
|
rimraf.sync('fixtures');
|
||
|
});
|
||
|
describe('.walk', () => {
|
||
|
it('should throw an error for non-exist directory', (done) => {
|
||
|
_1.walk('non-exist-directory', (error, entries) => {
|
||
|
assert.strictEqual(error.code, 'ENOENT');
|
||
|
assert.strictEqual(entries, undefined);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
it('should work without options or settings', (done) => {
|
||
|
_1.walk('fixtures', (error, entries) => {
|
||
|
assert.strictEqual(error, null);
|
||
|
assert.strictEqual(entries.length, 3);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
it('should work with options', (done) => {
|
||
|
_1.walk('fixtures', { entryFilter }, (error, entries) => {
|
||
|
assert.strictEqual(error, null);
|
||
|
assert.strictEqual(entries.length, 2);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
it('should work with settings', (done) => {
|
||
|
const settings = new _1.Settings({ entryFilter });
|
||
|
_1.walk('fixtures', settings, (error, entries) => {
|
||
|
assert.strictEqual(error, null);
|
||
|
assert.strictEqual(entries.length, 2);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
describe('.walkStream', () => {
|
||
|
it('should throw an error for non-exist directory', async () => {
|
||
|
const stream = _1.walkStream('non-exist-directory');
|
||
|
await assert.rejects(() => streamToPromise(stream), (error) => error.code === 'ENOENT');
|
||
|
});
|
||
|
it('should work without options or settings', async () => {
|
||
|
const stream = _1.walkStream('fixtures');
|
||
|
const actual = await streamToPromise(stream);
|
||
|
assert.strictEqual(actual.length, 3);
|
||
|
});
|
||
|
it('should work with options', async () => {
|
||
|
const stream = _1.walkStream('fixtures', { entryFilter });
|
||
|
const actual = await streamToPromise(stream);
|
||
|
assert.strictEqual(actual.length, 2);
|
||
|
});
|
||
|
it('should work with settings', async () => {
|
||
|
const settings = new _1.Settings({ entryFilter });
|
||
|
const stream = _1.walkStream('fixtures', settings);
|
||
|
const actual = await streamToPromise(stream);
|
||
|
assert.strictEqual(actual.length, 2);
|
||
|
});
|
||
|
});
|
||
|
describe('.walkSync', () => {
|
||
|
it('should throw an error for non-exist directory', () => {
|
||
|
const matcher = (error) => error.code === 'ENOENT';
|
||
|
assert.throws(() => _1.walkSync('non-exist-directory'), matcher);
|
||
|
});
|
||
|
it('should work without options or settings', () => {
|
||
|
const actual = _1.walkSync('fixtures');
|
||
|
assert.strictEqual(actual.length, 3);
|
||
|
});
|
||
|
it('should work with options', () => {
|
||
|
const actual = _1.walkSync('fixtures', { entryFilter });
|
||
|
assert.strictEqual(actual.length, 2);
|
||
|
});
|
||
|
it('should work with settings', () => {
|
||
|
const settings = new _1.Settings({ entryFilter });
|
||
|
const actual = _1.walkSync('fixtures', settings);
|
||
|
assert.strictEqual(actual.length, 2);
|
||
|
});
|
||
|
});
|
||
|
});
|