| '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(); |