diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/integration/node_unit_tests.rs | 1 | ||||
-rw-r--r-- | cli/tests/unit_node/vm_test.ts | 57 |
2 files changed, 58 insertions, 0 deletions
diff --git a/cli/tests/integration/node_unit_tests.rs b/cli/tests/integration/node_unit_tests.rs index 9aad274e3..14847e9db 100644 --- a/cli/tests/integration/node_unit_tests.rs +++ b/cli/tests/integration/node_unit_tests.rs @@ -82,6 +82,7 @@ util::unit_test_factory!( tty_test, util_test, v8_test, + vm_test, worker_threads_test, zlib_test ] diff --git a/cli/tests/unit_node/vm_test.ts b/cli/tests/unit_node/vm_test.ts new file mode 100644 index 000000000..c43495e1d --- /dev/null +++ b/cli/tests/unit_node/vm_test.ts @@ -0,0 +1,57 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +import { runInNewContext } from "node:vm"; +import { + assertEquals, + assertThrows, +} from "../../../test_util/std/assert/mod.ts"; + +Deno.test({ + name: "vm runInNewContext", + fn() { + const two = runInNewContext("1 + 1"); + assertEquals(two, 2); + }, +}); + +Deno.test({ + name: "vm runInNewContext sandbox", + fn() { + assertThrows(() => runInNewContext("Deno")); + // deno-lint-ignore no-var + var a = 1; + assertThrows(() => runInNewContext("a + 1")); + + runInNewContext("a = 2"); + assertEquals(a, 1); + }, +}); + +// https://github.com/webpack/webpack/blob/87660921808566ef3b8796f8df61bd79fc026108/lib/javascript/JavascriptParser.js#L4329 +Deno.test({ + name: "vm runInNewContext webpack magic comments", + fn() { + const webpackCommentRegExp = new RegExp( + /(^|\W)webpack[A-Z]{1,}[A-Za-z]{1,}:/, + ); + const comments = [ + 'webpackChunkName: "test"', + 'webpackMode: "lazy"', + "webpackPrefetch: true", + "webpackPreload: true", + "webpackProvidedExports: true", + 'webpackChunkLoading: "require"', + 'webpackExports: ["default", "named"]', + ]; + + for (const comment of comments) { + const result = webpackCommentRegExp.test(comment); + assertEquals(result, true); + + const [[key, _value]]: [string, string][] = Object.entries( + runInNewContext(`(function(){return {${comment}};})()`), + ); + const expectedKey = comment.split(":")[0].trim(); + assertEquals(key, expectedKey); + } + }, +}); |