Files
enviPy-bayer/static/js/ketcher2/node_modules/tap/lib/parse-test-args.js
2025-06-23 20:13:54 +02:00

65 lines
1.4 KiB
JavaScript

function typeOf (arg) {
var t = typeof arg
switch (t) {
case 'object':
return arg ? 'object' : 'null'
default:
return t
}
}
module.exports = function (name_, extra_, cb_, defaultName) {
var name
var extra
var cb
// this only works if it's literally the 4th argument. it's mostly
// used internally.
defaultName = defaultName || '(unnamed test)'
for (var i = 0; i < 3 && i < arguments.length; i++) {
var arg = arguments[i]
var type = typeOf(arg)
if (name === undefined && (type === 'string' || type === 'number'))
name = '' + arg
else if (type === 'object') {
extra = arg
if (name === undefined)
name = null
} else if (type === 'function') {
if (extra === undefined)
extra = {}
if (name === undefined)
name = null
cb = arg
} else if (arg === false) {
// it's handy while developing to put a ! in front of a
// function to temporarily make a test TODO
continue
} else if (type !== 'undefined')
throw new TypeError('unknown argument passed to parseTestArgs: ' + type)
}
if (!extra)
extra = {}
if (!cb)
extra.todo = true
if (!name && extra.name)
name = extra.name
if (!name && cb && cb.name)
name = cb.name
name = name || defaultName
extra.name = name
extra.cb = cb || todoCb
return extra
}
/* istanbul ignore next */
function todoCb () {
throw new Error('callback called for TODO test')
}