| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| |
| const { createContext, runInContext, runInNewContext } = require('vm'); |
| |
| const WASM_BYTES = Buffer.from( |
| [0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]); |
| |
| { |
| const ctx = createContext({ WASM_BYTES }); |
| const test = 'eval(""); new WebAssembly.Module(WASM_BYTES);'; |
| runInContext(test, ctx); |
| |
| runInNewContext(test, { WASM_BYTES }, { |
| contextCodeGeneration: undefined, |
| }); |
| } |
| |
| { |
| const ctx = createContext({}, { |
| codeGeneration: { |
| strings: false, |
| }, |
| }); |
| |
| const EvalError = runInContext('EvalError', ctx); |
| assert.throws(() => { |
| runInContext('eval("x")', ctx); |
| }, EvalError); |
| } |
| |
| { |
| const ctx = createContext({ WASM_BYTES }, { |
| codeGeneration: { |
| wasm: false, |
| }, |
| }); |
| |
| const CompileError = runInContext('WebAssembly.CompileError', ctx); |
| assert.throws(() => { |
| runInContext('new WebAssembly.Module(WASM_BYTES)', ctx); |
| }, CompileError); |
| } |
| |
| assert.throws(() => { |
| runInNewContext('eval("x")', {}, { |
| contextCodeGeneration: { |
| strings: false, |
| }, |
| }); |
| }, { |
| name: 'EvalError' |
| }); |
| |
| assert.throws(() => { |
| runInNewContext('new WebAssembly.Module(WASM_BYTES)', { WASM_BYTES }, { |
| contextCodeGeneration: { |
| wasm: false, |
| }, |
| }); |
| }, { |
| name: 'CompileError' |
| }); |
| |
| common.expectsError(() => { |
| createContext({}, { |
| codeGeneration: { |
| strings: 0, |
| }, |
| }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| }); |
| |
| common.expectsError(() => { |
| runInNewContext('eval("x")', {}, { |
| contextCodeGeneration: { |
| wasm: 1, |
| }, |
| }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE' |
| }); |
| |
| common.expectsError(() => { |
| createContext({}, { |
| codeGeneration: 1, |
| }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| }); |
| |
| common.expectsError(() => { |
| createContext({}, { |
| codeGeneration: null, |
| }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE', |
| }); |