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

77 lines
2 KiB
JavaScript

// this test makes sure that various things get enoent, instead of
// some other kind of throw.
var g = require('../')
var NODE_VERSION_MAJOR_WITH_BIGINT = 10
var NODE_VERSION_MINOR_WITH_BIGINT = 5
var NODE_VERSION_PATCH_WITH_BIGINT = 0
var nodeVersion = process.versions.node.split('.')
var nodeVersionMajor = Number.parseInt(nodeVersion[0], 10)
var nodeVersionMinor = Number.parseInt(nodeVersion[1], 10)
var nodeVersionPatch = Number.parseInt(nodeVersion[2], 10)
function nodeSupportsBigInt () {
if (nodeVersionMajor > NODE_VERSION_MAJOR_WITH_BIGINT) {
return true
} else if (nodeVersionMajor === NODE_VERSION_MAJOR_WITH_BIGINT) {
if (nodeVersionMinor > NODE_VERSION_MINOR_WITH_BIGINT) {
return true
} else if (nodeVersionMinor === NODE_VERSION_MINOR_WITH_BIGINT) {
if (nodeVersionPatch >= NODE_VERSION_PATCH_WITH_BIGINT) {
return true
}
}
}
return false
}
var t = require('tap')
var file = 'this file does not exist even a little bit'
var methods = [
['open', 'r'],
['readFile'],
['stat'],
['lstat'],
['utimes', new Date(), new Date()],
['readdir']
]
// any version > v6 can do readdir(path, options, cb)
if (process.version.match(/^v([6-9]|[1-9][0-9])\./)) {
methods.push(['readdir', {}])
}
// any version > v10.5 can do stat(path, options, cb)
if (nodeSupportsBigInt()) {
methods.push(['stat', {}])
methods.push(['lstat', {}])
}
t.plan(methods.length)
methods.forEach(function (method) {
t.test(method[0], runTest(method))
})
function runTest (args) { return function (t) {
var method = args.shift()
args.unshift(file)
var methodSync = method + 'Sync'
t.type(g[methodSync], 'function')
t.throws(function () {
g[methodSync].apply(g, args)
}, { code: 'ENOENT' })
// add the callback
args.push(verify(t))
t.type(g[method], 'function')
t.doesNotThrow(function () {
g[method].apply(g, args)
})
}}
function verify (t) { return function (er) {
t.type(er, Error)
t.equal(er.code, 'ENOENT')
t.end()
}}