diff options
author | Anna Henningsen <anna@addaleax.net> | 2020-06-23 00:33:04 +0200 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2020-06-26 11:41:33 -0700 |
commit | f63436d190b60e12131036aa9d1888d9023e9127 (patch) | |
tree | 8cd64069819b9eb0d1e222fb3b6048cb071f222b /test/known_issues | |
parent | e68563e31c5289c39d4e564a3e5d27e5a713ee41 (diff) | |
download | node-new-f63436d190b60e12131036aa9d1888d9023e9127.tar.gz |
vm: add run-after-evaluate microtask mode
This allows timeouts to apply to e.g. `Promise`s and `async function`s
from code running inside of `vm.Context`s, by giving the Context its
own microtasks queue.
Fixes: https://github.com/nodejs/node/issues/3020
PR-URL: https://github.com/nodejs/node/pull/34023
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Diffstat (limited to 'test/known_issues')
-rw-r--r-- | test/known_issues/known_issues.status | 3 | ||||
-rw-r--r-- | test/known_issues/test-vm-timeout-escape-promise.js | 39 | ||||
-rw-r--r-- | test/known_issues/test-vm-timeout-escape-queuemicrotask.js | 2 |
3 files changed, 1 insertions, 43 deletions
diff --git a/test/known_issues/known_issues.status b/test/known_issues/known_issues.status index 9ca45bbd85..86d95e41d1 100644 --- a/test/known_issues/known_issues.status +++ b/test/known_issues/known_issues.status @@ -14,9 +14,6 @@ test-vm-timeout-escape-queuemicrotask: SKIP [$system==win32] [$system==linux] -# https://github.com/nodejs/node/pull/23743 -# https://github.com/nodejs/node/issues/3020 -test-vm-timeout-escape-promise: PASS,FLAKY [$system==macos] diff --git a/test/known_issues/test-vm-timeout-escape-promise.js b/test/known_issues/test-vm-timeout-escape-promise.js deleted file mode 100644 index 4452c83cd1..0000000000 --- a/test/known_issues/test-vm-timeout-escape-promise.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -// https://github.com/nodejs/node/issues/3020 -// Promises, nextTick, and queueMicrotask allow code to escape the timeout -// set for runInContext, runInNewContext, and runInThisContext - -require('../common'); -const assert = require('assert'); -const vm = require('vm'); - -const NS_PER_MS = 1000000n; - -const hrtime = process.hrtime.bigint; - -function loop() { - const start = hrtime(); - while (1) { - const current = hrtime(); - const span = (current - start) / NS_PER_MS; - if (span >= 100n) { - throw new Error( - `escaped timeout at ${span} milliseconds!`); - } - } -} - -assert.throws(() => { - vm.runInNewContext( - 'Promise.resolve().then(loop); loop();', - { - hrtime, - loop - }, - { timeout: 5 } - ); -}, { - code: 'ERR_SCRIPT_EXECUTION_TIMEOUT', - message: 'Script execution timed out after 5ms' -}); diff --git a/test/known_issues/test-vm-timeout-escape-queuemicrotask.js b/test/known_issues/test-vm-timeout-escape-queuemicrotask.js index 0d3a0b0c5c..c8333bd044 100644 --- a/test/known_issues/test-vm-timeout-escape-queuemicrotask.js +++ b/test/known_issues/test-vm-timeout-escape-queuemicrotask.js @@ -35,7 +35,7 @@ assert.throws(() => { queueMicrotask, loop }, - { timeout } + { timeout, microtaskMode: 'afterScriptRun' } ); }, { code: 'ERR_SCRIPT_EXECUTION_TIMEOUT', |