forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit fixes up some issues in nodejs#18394. * Switch vm.Module internals to use the new link method properly * Fix bug with ModuleWrap::Link * Add tests for ModuleWrap::Link PR-URL: nodejs#18509 Fixes: nodejs#18249 Refs: nodejs#18394 Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
- Loading branch information
Showing
5 changed files
with
54 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
'use strict'; | ||
|
||
// exposes ModuleWrap for testing | ||
|
||
module.exports = internalBinding('module_wrap').ModuleWrap; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
'use strict'; | ||
|
||
// Flags: --expose-internals | ||
|
||
const common = require('../common'); | ||
common.crashOnUnhandledRejection(); | ||
const assert = require('assert'); | ||
|
||
const ModuleWrap = require('internal/loader/ModuleWrap'); | ||
const { getPromiseDetails, isPromise } = process.binding('util'); | ||
const setTimeoutAsync = require('util').promisify(setTimeout); | ||
|
||
const foo = new ModuleWrap('export * from "bar"; 6;', 'foo'); | ||
const bar = new ModuleWrap('export const five = 5', 'bar'); | ||
|
||
(async () => { | ||
const promises = foo.link(() => setTimeoutAsync(1000).then(() => bar)); | ||
assert.strictEqual(promises.length, 1); | ||
assert(isPromise(promises[0])); | ||
|
||
await Promise.all(promises); | ||
|
||
assert.strictEqual(getPromiseDetails(promises[0])[1], bar); | ||
|
||
foo.instantiate(); | ||
|
||
assert.strictEqual(await foo.evaluate(), 6); | ||
assert.strictEqual(foo.namespace().five, 5); | ||
})(); |