Skip to content

Commit 4b9de44

Browse files
TrottMylesBorins
authored andcommitted
test: refactor test-vm-new-script-new-context
* block scope test cases * clean up global leaks in individual test cases * enable global variable leak checking * remove console.error() statements PR-URL: #14536 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent e5375a9 commit 4b9de44

1 file changed

Lines changed: 70 additions & 53 deletions

File tree

Lines changed: 70 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,86 @@
11
'use strict';
2-
constcommon=require('../common');
2+
require('../common');
3+
34
constassert=require('assert');
5+
46
constScript=require('vm').Script;
57

6-
common.globalCheck=false;
8+
{
9+
constscript=newScript('\'passed\';');
10+
constresult1=script.runInNewContext();
11+
constresult2=script.runInNewContext();
12+
assert.strictEqual('passed',result1);
13+
assert.strictEqual('passed',result2);
14+
}
715

8-
console.error('run a string');
9-
letscript=newScript('\'passed\';');
10-
console.error('script created');
11-
constresult1=script.runInNewContext();
12-
constresult2=script.runInNewContext();
13-
assert.strictEqual('passed',result1);
14-
assert.strictEqual('passed',result2);
16+
{
17+
constscript=newScript('throw new Error(\'test\');');
18+
assert.throws(function(){
19+
script.runInNewContext();
20+
},/^Error:test$/);
21+
}
1522

16-
console.error('thrown error');
17-
script=newScript('throw new Error(\'test\');');
18-
assert.throws(function(){
19-
script.runInNewContext();
20-
},/^Error:test$/);
23+
{
24+
constscript=newScript('foo.bar = 5;');
25+
assert.throws(function(){
26+
script.runInNewContext();
27+
},/^ReferenceError:fooisnotdefined$/);
28+
}
2129

22-
23-
console.error('undefined reference');
24-
script=newScript('foo.bar = 5;');
25-
assert.throws(function(){
30+
{
31+
global.hello=5;
32+
constscript=newScript('hello = 2');
2633
script.runInNewContext();
27-
},/^ReferenceError:fooisnotdefined$/);
34+
assert.strictEqual(5,global.hello);
2835

36+
// cleanup
37+
deleteglobal.hello;
38+
}
2939

30-
global.hello=5;
31-
script=newScript('hello = 2');
32-
script.runInNewContext();
33-
assert.strictEqual(5,global.hello);
40+
{
41+
global.code='foo = 1;'+
42+
'bar = 2;'+
43+
'if (baz !== 3) throw new Error(\'test fail\');';
44+
global.foo=2;
45+
global.obj={foo: 0,baz: 3};
46+
constscript=newScript(global.code);
47+
/* eslint-disable no-unused-vars */
48+
constbaz=script.runInNewContext(global.obj);
49+
/* eslint-enable no-unused-vars */
50+
assert.strictEqual(1,global.obj.foo);
51+
assert.strictEqual(2,global.obj.bar);
52+
assert.strictEqual(2,global.foo);
3453

54+
//cleanup
55+
deleteglobal.code;
56+
deleteglobal.foo;
57+
deleteglobal.obj;
58+
}
3559

36-
console.error('pass values in and out');
37-
global.code='foo = 1;'+
38-
'bar = 2;'+
39-
'if (baz !== 3) throw new Error(\'test fail\');';
40-
global.foo=2;
41-
global.obj={foo: 0,baz: 3};
42-
script=newScript(global.code);
43-
/* eslint-disable no-unused-vars */
44-
constbaz=script.runInNewContext(global.obj);
45-
/* eslint-enable no-unused-vars */
46-
assert.strictEqual(1,global.obj.foo);
47-
assert.strictEqual(2,global.obj.bar);
48-
assert.strictEqual(2,global.foo);
60+
{
61+
constscript=newScript('f()');
62+
functionchangeFoo(){global.foo=100;}
63+
script.runInNewContext({f: changeFoo});
64+
assert.strictEqual(global.foo,100);
4965

50-
console.error('call a function by reference');
51-
script=newScript('f()');
52-
functionchangeFoo(){global.foo=100;}
53-
script.runInNewContext({f: changeFoo});
54-
assert.strictEqual(global.foo,100);
66+
// cleanup
67+
deleteglobal.foo;
68+
}
5569

56-
console.error('modify an object by reference');
57-
script=newScript('f.a = 2');
58-
constf={a: 1};
59-
script.runInNewContext({f: f});
60-
assert.strictEqual(f.a,2);
70+
{
71+
constscript=newScript('f.a = 2');
72+
constf={a: 1};
73+
script.runInNewContext({f: f});
74+
assert.strictEqual(f.a,2);
6175

62-
assert.throws(function(){
63-
script.runInNewContext();
64-
},/^ReferenceError:fisnotdefined$/);
76+
assert.throws(function(){
77+
script.runInNewContext();
78+
},/^ReferenceError:fisnotdefined$/);
79+
}
6580

66-
console.error('invalid this');
67-
assert.throws(function(){
68-
script.runInNewContext.call('\'hello\';');
69-
},/^TypeError:this\.runInContextisnotafunction$/);
81+
{
82+
constscript=newScript('');
83+
assert.throws(function(){
84+
script.runInNewContext.call('\'hello\';');
85+
},/^TypeError:this\.runInContextisnotafunction$/);
86+
}

0 commit comments

Comments
 (0)