rpgmaker-linux/nwjs/packagefiles/tyranobuilder/node_modules/graceful-fs/test/readdir-options.js
2024-07-01 20:36:56 +03:00

61 lines
1.3 KiB
JavaScript

var fs = require("fs")
var t = require("tap")
var currentTest
var strings = ['b', 'z', 'a']
var buffs = strings.map(function (s) { return Buffer.from(s) })
var hexes = buffs.map(function (b) { return b.toString('hex') })
function getRet (encoding) {
switch (encoding) {
case 'hex':
return hexes
case 'buffer':
return buffs
default:
return strings
}
}
var readdir = fs.readdir
var failed = false
fs.readdir = function(path, options, cb) {
if (!failed) {
// simulate an EMFILE and then open and close a thing to retry
failed = true
process.nextTick(function () {
var er = new Error('synthetic emfile')
er.code = 'EMFILE'
cb(er)
process.nextTick(function () {
g.closeSync(fs.openSync(__filename, 'r'))
})
})
return
}
failed = false
currentTest.type(cb, 'function')
currentTest.type(options, 'object')
currentTest.ok(options)
process.nextTick(function() {
var ret = getRet(options.encoding)
cb(null, ret)
})
}
var g = require("../")
var encodings = ['buffer', 'hex', 'utf8', null]
encodings.forEach(function (enc) {
t.test('encoding=' + enc, function (t) {
currentTest = t
g.readdir("whatevers", { encoding: enc }, function (er, files) {
if (er)
throw er
t.same(files, getRet(enc).sort())
t.end()
})
})
})