"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); }); }); });