| 'use strict'; |
| |
| // Flags: --experimental-vm-modules |
| |
| require('../common'); |
| |
| const assert = require('assert'); |
| |
| const { SourceTextModule } = require('vm'); |
| const test = require('node:test'); |
| |
| test('module is not instantiated yet', () => { |
| const foo = new SourceTextModule(` |
| export const foo = 4 |
| export default 5; |
| `); |
| assert.throws(() => foo.hasAsyncGraph(), { |
| code: 'ERR_VM_MODULE_STATUS', |
| }); |
| }); |
| |
| test('simple module with top-level await', () => { |
| const foo = new SourceTextModule(` |
| export const foo = 4 |
| export default 5; |
| |
| await 0; |
| `); |
| foo.linkRequests([]); |
| foo.instantiate(); |
| |
| assert.strictEqual(foo.hasAsyncGraph(), true); |
| }); |
| |
| test('simple module with non top-level await', () => { |
| const foo = new SourceTextModule(` |
| export const foo = 4 |
| export default 5; |
| |
| export async function f() { |
| await 0; |
| } |
| `); |
| foo.linkRequests([]); |
| foo.instantiate(); |
| |
| assert.strictEqual(foo.hasAsyncGraph(), false); |
| }); |
| |
| test('module with a dependency containing top-level await', () => { |
| const foo = new SourceTextModule(` |
| export const foo = 4 |
| export default 5; |
| |
| await 0; |
| `); |
| foo.linkRequests([]); |
| |
| const bar = new SourceTextModule(` |
| export { foo } from 'foo'; |
| `); |
| bar.linkRequests([foo]); |
| bar.instantiate(); |
| |
| assert.strictEqual(foo.hasAsyncGraph(), true); |
| assert.strictEqual(bar.hasAsyncGraph(), true); |
| }); |