nodejs/test/module-hooks/test-module-hooks-load-url-change-require.js
Vitalii Akimov 9ec7bed7b9 module: fixing url change in load sync hook chain
Fixes: https://github.com/nodejs/node/issues/56376
PR-URL: https://github.com/nodejs/node/pull/56402
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2025-01-22 10:25:00 -08:00

31 lines
858 B
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { registerHooks } = require('module');
const fixtures = require('../common/fixtures');
// This tests shows the url parameter in `load` can be changed in the `nextLoad` call
// It changes `foo` package name into `redirected-fs` and then loads `redirected-fs`
const hook = registerHooks({
resolve(specifier, context, nextResolve) {
assert.strictEqual(specifier, 'foo');
return {
url: 'foo://bar',
shortCircuit: true,
};
},
load: common.mustCall(function load(url, context, nextLoad) {
assert.strictEqual(url, 'foo://bar');
return nextLoad(
fixtures.fileURL('module-hooks', 'redirected-fs.js').href,
context,
);
}),
});
assert.strictEqual(require('foo').exports_for_test, 'redirected fs');
hook.deregister();