// deno-fmt-ignore-file // deno-lint-ignore-file // Copyright Joyent and Node contributors. All rights reserved. MIT license. // Taken from Node 18.12.1 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually. /* eslint-disable strict, no-var, no-delete-var, no-undef, node-core/required-modules, node-core/require-common-first */ // Importing common would break the execution. Indeed running `vm.runInThisContext` alters the global context // when declaring new variables with `var`. The other rules (strict, no-var, no-delete-var) have been disabled // in order to be able to test this specific not-strict case playing with `var` and `delete`. // Related to bug report: https://github.com/nodejs/node/issues/43129 var assert = require('assert'); var vm = require('vm'); var data = []; var a = 'direct'; delete a; data.push(a); var item2 = vm.runInThisContext(` var unusedB = 1; var data = []; var b = "this"; delete b; data.push(b); data[0] `); data.push(item2); vm.runInContext( ` var unusedC = 1; var c = "new"; delete c; data.push(c); `, vm.createContext({ data: data }) ); assert.deepStrictEqual(data, ['direct', 'this', 'new']); assert.strictEqual(typeof unusedB, 'number'); // Declared within runInThisContext assert.strictEqual(typeof unusedC, 'undefined'); // Declared within runInContext