You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.4 KiB
68 lines
1.4 KiB
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() |
|
}) |
|
})
|
|
|