55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
|
var fstream = require("../fstream.js")
|
||
|
var tap = require("tap")
|
||
|
var fs = require("fs")
|
||
|
var path = require("path")
|
||
|
var children = -1
|
||
|
var dir = path.dirname(__dirname)
|
||
|
|
||
|
var gotReady = false
|
||
|
var ended = false
|
||
|
|
||
|
tap.test("reader test", function (t) {
|
||
|
|
||
|
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()
|
||
|
})
|
||
|
|
||
|
})
|