2024-12-29 20:36:54 +00:00
|
|
|
'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({
|
2025-10-07 14:40:05 +02:00
|
|
|
resolve: common.mustCall((specifier, context, nextResolve) => {
|
2024-12-29 20:36:54 +00:00
|
|
|
assert.strictEqual(specifier, 'foo');
|
|
|
|
|
return {
|
|
|
|
|
url: 'foo://bar',
|
|
|
|
|
shortCircuit: true,
|
|
|
|
|
};
|
2025-10-07 14:40:05 +02:00
|
|
|
}),
|
2024-12-29 20:36:54 +00:00
|
|
|
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();
|