| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { registerHooks } = require('module'); |
| |
| // This tests that required builtins get null as source from default |
| // step, and the source returned are ignored. |
| // TODO(joyeecheung): this is to align with the module.register() behavior |
| // but perhaps the load hooks should not be invoked for builtins at all. |
| |
| // Pick a builtin that's unlikely to be loaded already - like zlib. |
| assert(!process.moduleLoadList.includes('NativeModule zlib')); |
| |
| const hook = registerHooks({ |
| load: common.mustCall(function load(url, context, nextLoad) { |
| assert.strictEqual(url, 'node:zlib'); |
| const result = nextLoad(url, context); |
| assert.strictEqual(result.source, null); |
| return { |
| source: 'throw new Error("I should not be thrown")', |
| format: 'builtin', |
| }; |
| }), |
| }); |
| |
| assert.strictEqual(typeof require('zlib').createGzip, 'function'); |
| |
| hook.deregister(); |