| 'use strict'; |
| |
| // Flags: --experimental-vm-modules |
| |
| const common = require('../common'); |
| |
| const assert = require('assert'); |
| |
| const { SourceTextModule } = require('vm'); |
| |
| const finished = common.mustCall(); |
| |
| (async function main() { |
| { |
| globalThis.count = 0; |
| const m = new SourceTextModule('count += 1;'); |
| await m.link(common.mustNotCall()); |
| assert.strictEqual(await m.evaluate(), undefined); |
| assert.strictEqual(globalThis.count, 1); |
| assert.strictEqual(await m.evaluate(), undefined); |
| assert.strictEqual(globalThis.count, 1); |
| assert.strictEqual(await m.evaluate(), undefined); |
| assert.strictEqual(globalThis.count, 1); |
| delete globalThis.count; |
| } |
| |
| { |
| const m = new SourceTextModule('throw new Error()'); |
| await m.link(common.mustNotCall()); |
| |
| let threw = false; |
| try { |
| await m.evaluate(); |
| } catch (err) { |
| assert(err instanceof Error); |
| threw = true; |
| } |
| assert(threw); |
| |
| threw = false; |
| try { |
| await m.evaluate(); |
| } catch (err) { |
| assert(err instanceof Error); |
| threw = true; |
| } |
| assert(threw); |
| } |
| |
| finished(); |
| })().then(common.mustCall()); |