mirror of https://github.com/nodejs/node.git
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
require('../common');
|
|
const assert = require('assert');
|
|
const { registerHooks } = require('module');
|
|
|
|
// This tests that the invalid return values in load hooks are not accepted.
|
|
|
|
const hook = registerHooks({
|
|
resolve(specifier, context, nextResolve) {
|
|
return { shortCircuit: true, url: `test://${specifier}` };
|
|
},
|
|
load(url, context, nextLoad) {
|
|
const result = { shortCircuit: true };
|
|
if (url.endsWith('array')) {
|
|
result.source = [];
|
|
} else if (url.endsWith('null')) {
|
|
result.source = null;
|
|
} else if (url.endsWith('number')) {
|
|
result.source = 1;
|
|
} else if (url.endsWith('boolean')) {
|
|
result.source = true;
|
|
} else if (url.endsWith('function')) {
|
|
result.source = () => {};
|
|
} else if (url.endsWith('object')) {
|
|
result.source = {};
|
|
}
|
|
return result;
|
|
},
|
|
});
|
|
|
|
for (const item of ['undefined', 'array', 'null', 'number', 'boolean', 'function', 'object']) {
|
|
assert.throws(() => { require(item); }, {
|
|
code: 'ERR_INVALID_RETURN_PROPERTY_VALUE',
|
|
message: /"source" from the "load" hook/,
|
|
});
|
|
}
|
|
|
|
hook.deregister();
|