Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions test/parallel/test-vm-context-async-script.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,16 +20,16 @@
// USE OR OTHER DEALINGS IN THE SOFTWARE.

'use strict';
require('../common');
const common = require('../common');
const assert = require('assert');
const vm = require('vm');

const sandbox = { setTimeout: setTimeout };
const sandbox = { setTimeout };

const ctx = vm.createContext(sandbox);

vm.runInContext('setTimeout(function() { x = 3; }, 0);', ctx);
setTimeout(function() {
setTimeout(common.mustCall(() => {
assert.strictEqual(sandbox.x, 3);
assert.strictEqual(ctx.x, 3);
}, 1);
}), 1);
16 changes: 8 additions & 8 deletions test/parallel/test-vm-context.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,29 +27,29 @@ const vm = require('vm');
const Script = vm.Script;
let script = new Script('"passed";');

console.error('run in a new empty context');
// Run in a new empty context
let context = vm.createContext();
let result = script.runInContext(context);
assert.strictEqual('passed', result);

console.error('create a new pre-populated context');
// Create a new pre-populated context
context = vm.createContext({ 'foo': 'bar', 'thing': 'lala' });
assert.strictEqual('bar', context.foo);
assert.strictEqual('lala', context.thing);

console.error('test updating context');
// Test updating context
script = new Script('foo = 3;');
result = script.runInContext(context);
assert.strictEqual(3, context.foo);
assert.strictEqual('lala', context.thing);

// Issue GH-227:
assert.throws(function() {
assert.throws(() => {
vm.runInNewContext('', null, 'some.js');
}, /^TypeError: sandbox must be an object$/);

// Issue GH-1140:
console.error('test runInContext signature');
// Test runInContext signature
let gh1140Exception;
try {
vm.runInContext('throw new Error()', context, 'expected-filename.js');
Expand DownExpand Up@@ -77,7 +77,7 @@ const contextifiedSandboxErrorMsg =
});

// Issue GH-693:
console.error('test RegExp as argument to assert.throws');
// Test RegExp as argument to assert.throws
script = vm.createScript('const assert = require(\'assert\'); assert.throws(' +
'function() { throw "hello world"; }, /hello/);',
'some.js');
Expand All@@ -92,13 +92,13 @@ assert.strictEqual(script.runInContext(ctx), false);

// Error on the first line of a module should
// have the correct line and column number
assert.throws(function() {
assert.throws(() => {
vm.runInContext('throw new Error()', context, {
filename: 'expected-filename.js',
lineOffset: 32,
columnOffset: 123
});
}, function(err) {
}, (err) => {
return /expected-filename\.js:33:130/.test(err.stack);
}, 'Expected appearance of proper offset in Error stack');

Expand Down
8 changes: 4 additions & 4 deletions test/parallel/test-vm-create-and-run-in-context.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,23 +26,23 @@ const assert = require('assert');

const vm = require('vm');

console.error('run in a new empty context');
// Run in a new empty context
let context = vm.createContext();
let result = vm.runInContext('"passed";', context);
assert.strictEqual('passed', result);

console.error('create a new pre-populated context');
// Create a new pre-populated context
context = vm.createContext({ 'foo': 'bar', 'thing': 'lala' });
assert.strictEqual('bar', context.foo);
assert.strictEqual('lala', context.thing);

console.error('test updating context');
// Test updating context
result = vm.runInContext('var foo = 3;', context);
assert.strictEqual(3, context.foo);
assert.strictEqual('lala', context.thing);

// https://github.com/nodejs/node/issues/5768
console.error('run in contextified sandbox without referencing the context');
// Run in contextified sandbox without referencing the context
const sandbox = { x: 1 };
vm.createContext(sandbox);
global.gc();
Expand Down
2 changes: 0 additions & 2 deletions test/parallel/test-vm-function-declaration.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -42,5 +42,3 @@ assert.strictEqual(res.name, 'b', 'res should be named b');
assert.strictEqual(typeof o.a, 'function', 'a should be function');
assert.strictEqual(typeof o.b, 'function', 'b should be function');
assert.strictEqual(res, o.b, 'result should be global b function');

console.log('ok');
8 changes: 4 additions & 4 deletions test/parallel/test-vm-new-script-new-context.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,14 +36,14 @@ const Script = require('vm').Script;

{
const script = new Script('throw new Error(\'test\');');
assert.throws(function() {
assert.throws(() => {
script.runInNewContext();
}, /^Error: test$/);
}

{
const script = new Script('foo.bar = 5;');
assert.throws(function() {
assert.throws(() => {
script.runInNewContext();
}, /^ReferenceError: foo is not defined$/);
}
Expand DownExpand Up@@ -94,14 +94,14 @@ const Script = require('vm').Script;
script.runInNewContext({ f: f });
assert.strictEqual(f.a, 2);

assert.throws(function() {
assert.throws(() => {
script.runInNewContext();
}, /^ReferenceError: f is not defined$/);
}

{
const script = new Script('');
assert.throws(function() {
assert.throws(() => {
script.runInNewContext.call('\'hello\';');
}, /^TypeError: this\.runInContext is not a function$/);
}
10 changes: 5 additions & 5 deletions test/parallel/test-vm-new-script-this-context.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,14 +26,14 @@ const Script = require('vm').Script;

common.globalCheck = false;

console.error('run a string');
// Run a string
let script = new Script('\'passed\';');
const result = script.runInThisContext(script);
assert.strictEqual('passed', result);

console.error('thrown error');
// Thrown error
script = new Script('throw new Error(\'test\');');
assert.throws(function() {
assert.throws(() => {
script.runInThisContext(script);
}, /^Error: test$/);

Expand All@@ -43,7 +43,7 @@ script.runInThisContext(script);
assert.strictEqual(2, global.hello);


console.error('pass values');
// Pass values
global.code = 'foo = 1;' +
'bar = 2;' +
'if (typeof baz !== "undefined") throw new Error("test fail");';
Expand All@@ -55,7 +55,7 @@ assert.strictEqual(0, global.obj.foo);
assert.strictEqual(2, global.bar);
assert.strictEqual(1, global.foo);

console.error('call a function');
// Call a function
global.f = function() { global.foo = 100; };
script = new Script('f()');
script.runInThisContext(script);
Expand Down
14 changes: 7 additions & 7 deletions test/parallel/test-vm-run-in-new-context.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -31,12 +31,12 @@ assert.strictEqual(typeof global.gc, 'function',

common.globalCheck = false;

console.error('run a string');
// Run a string
const result = vm.runInNewContext('\'passed\';');
assert.strictEqual('passed', result);

console.error('thrown error');
assert.throws(function() {
// Thrown error
assert.throws(() => {
vm.runInNewContext('throw new Error(\'test\');');
}, /^Error: test$/);

Expand All@@ -45,7 +45,7 @@ vm.runInNewContext('hello = 2');
assert.strictEqual(5, global.hello);


console.error('pass values in and out');
// Pass values in and out
global.code = 'foo = 1;' +
'bar = 2;' +
'if (baz !== 3) throw new Error(\'test fail\');';
Expand All@@ -58,17 +58,17 @@ assert.strictEqual(1, global.obj.foo);
assert.strictEqual(2, global.obj.bar);
assert.strictEqual(2, global.foo);

console.error('call a function by reference');
// Call a function by reference
function changeFoo() { global.foo = 100; }
vm.runInNewContext('f()', { f: changeFoo });
assert.strictEqual(global.foo, 100);

console.error('modify an object by reference');
// Modify an object by reference
const f = { a: 1 };
vm.runInNewContext('f.a = 2', { f: f });
assert.strictEqual(f.a, 2);

console.error('use function in context without referencing context');
// Use function in context without referencing context
const fn = vm.runInNewContext('(function() { obj.p = {}; })', { obj: {} });
global.gc();
fn();
Expand Down
14 changes: 5 additions & 9 deletions test/parallel/test-vm-syntax-error-message.js
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
'use strict';
require('../common');
const common = require('../common');
const assert = require('assert');
const child_process = require('child_process');

Expand All@@ -11,16 +11,12 @@ const p = child_process.spawn(process.execPath, [
'catch (e) { console.log(e.message); }'
]);

p.stderr.on('data', function(data) {
assert.fail(`Unexpected stderr data: ${data}`);
});
p.stderr.on('data', common.mustNotCall());

let output = '';

p.stdout.on('data', function(data) {
output += data;
});
p.stdout.on('data', (data) => output += data);

process.on('exit', function() {
p.stdout.on('end', common.mustCall(() => {
assert.strictEqual(output.replace(/[\r\n]+/g, ''), 'boo');
});
}));
12 changes: 4 additions & 8 deletions test/parallel/test-vm-syntax-error-stderr.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -12,18 +12,14 @@ const p = child_process.spawn(process.execPath, [
wrong_script
]);

p.stdout.on('data', function(data) {
assert.fail(`Unexpected stdout data: ${data}`);
});
p.stdout.on('data', common.mustNotCall());

let output = '';

p.stderr.on('data', function(data) {
output += data;
});
p.stderr.on('data', (data) => output += data);

process.on('exit', function() {
p.stderr.on('end', common.mustCall(() => {
assert(/BEGIN CERT/.test(output));
assert(/^\s+\^/m.test(output));
assert(/Invalid left-hand side expression in prefix operation/.test(output));
});
}));