var fstream = require('../fstream.js') var tap = require('tap') var fs = require('fs') var path = require('path') var dir = path.dirname(__dirname) tap.test('reader test', function (t) { var children = -1 var gotReady = false var ended = false var r = fstream.Reader({ path: dir, filter: function () { // return this.parent === r return this.parent === r || this === r } }) r.on('ready', function () { gotReady = true children = fs.readdirSync(dir).length console.error('Setting expected children to ' + children) t.equal(r.type, 'Directory', 'should be a directory') }) r.on('entry', function (entry) { children-- if (!gotReady) { t.fail('children before ready!') } t.equal(entry.dirname, r.path, 'basename is parent dir') }) r.on('error', function (er) { t.fail(er) t.end() process.exit(1) }) r.on('end', function () { t.equal(children, 0, 'should have seen all children') ended = true }) var closed = false r.on('close', function () { t.ok(ended, 'saw end before close') t.notOk(closed, 'close should only happen once') closed = true t.end() }) }) tap.test('reader error test', function (t) { // assumes non-root on a *nix system var r = fstream.Reader({ path: '/etc/shadow' }) r.once('error', function (er) { t.ok(true) t.end() }) r.on('end', function () { t.fail('reader ended without error') t.end() }) })