Permalink
Cannot retrieve contributors at this time
199 lines (188 sloc)
6.16 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/process/test.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var assert = require('assert'); | |
var ourProcess = require('./browser'); | |
describe('test against our process', function () { | |
test(ourProcess); | |
}); | |
if (!process.browser) { | |
describe('test against node', function () { | |
test(process); | |
}); | |
vmtest(); | |
} | |
function test (ourProcess) { | |
describe('test arguments', function () { | |
it ('works', function (done) { | |
var order = 0; | |
ourProcess.nextTick(function (num) { | |
assert.equal(num, order++, 'first one works'); | |
ourProcess.nextTick(function (num) { | |
assert.equal(num, order++, 'recursive one is 4th'); | |
}, 3); | |
}, 0); | |
ourProcess.nextTick(function (num) { | |
assert.equal(num, order++, 'second one starts'); | |
ourProcess.nextTick(function (num) { | |
assert.equal(num, order++, 'this is third'); | |
ourProcess.nextTick(function (num) { | |
assert.equal(num, order++, 'this is last'); | |
done(); | |
}, 5); | |
}, 4); | |
}, 1); | |
ourProcess.nextTick(function (num) { | |
assert.equal(num, order++, '3rd schedualed happens after the error'); | |
}, 2); | |
}); | |
}); | |
if (!process.browser) { | |
describe('test errors', function (t) { | |
it ('works', function (done) { | |
var order = 0; | |
process.removeAllListeners('uncaughtException'); | |
process.once('uncaughtException', function(err) { | |
assert.equal(2, order++, 'error is third'); | |
ourProcess.nextTick(function () { | |
assert.equal(5, order++, 'schedualed in error is last'); | |
done(); | |
}); | |
}); | |
ourProcess.nextTick(function () { | |
assert.equal(0, order++, 'first one works'); | |
ourProcess.nextTick(function () { | |
assert.equal(4, order++, 'recursive one is 4th'); | |
}); | |
}); | |
ourProcess.nextTick(function () { | |
assert.equal(1, order++, 'second one starts'); | |
throw(new Error('an error is thrown')); | |
}); | |
ourProcess.nextTick(function () { | |
assert.equal(3, order++, '3rd schedualed happens after the error'); | |
}); | |
}); | |
}); | |
} | |
describe('rename globals', function (t) { | |
var oldTimeout = setTimeout; | |
var oldClear = clearTimeout; | |
it('clearTimeout', function (done){ | |
var ok = true; | |
clearTimeout = function () { | |
ok = false; | |
} | |
var ran = false; | |
function cleanup() { | |
clearTimeout = oldClear; | |
var err; | |
try { | |
assert.ok(ok, 'fake clearTimeout ran'); | |
assert.ok(ran, 'should have run'); | |
} catch (e) { | |
err = e; | |
} | |
done(err); | |
} | |
setTimeout(cleanup, 1000); | |
ourProcess.nextTick(function () { | |
ran = true; | |
}); | |
}); | |
it('just setTimeout', function (done){ | |
setTimeout = function () { | |
setTimeout = oldTimeout; | |
try { | |
assert.ok(false, 'fake setTimeout called') | |
} catch (e) { | |
done(e); | |
} | |
} | |
ourProcess.nextTick(function () { | |
setTimeout = oldTimeout; | |
done(); | |
}); | |
}); | |
}); | |
} | |
function vmtest() { | |
var vm = require('vm'); | |
var fs = require('fs'); | |
var process = fs.readFileSync('./browser.js', {encoding: 'utf8'}); | |
describe('should work in vm in strict mode with no globals', function () { | |
it('should parse', function (done) { | |
var str = '"use strict";var module = {exports:{}};'; | |
str += process; | |
str += 'this.works = process.browser;'; | |
var script = new vm.Script(str); | |
var context = { | |
works: false | |
}; | |
script.runInNewContext(context); | |
assert.ok(context.works); | |
done(); | |
}); | |
it('setTimeout throws error', function (done) { | |
var str = '"use strict";var module = {exports:{}};'; | |
str += process; | |
str += 'try {process.nextTick(function () {})} catch (e){this.works = e;}'; | |
var script = new vm.Script(str); | |
var context = { | |
works: false | |
}; | |
script.runInNewContext(context); | |
assert.ok(context.works); | |
done(); | |
}); | |
it('should generally work', function (done) { | |
var str = '"use strict";var module = {exports:{}};'; | |
str += process; | |
str += 'process.nextTick(function () {assert.ok(true);done();})'; | |
var script = new vm.Script(str); | |
var context = { | |
clearTimeout: clearTimeout, | |
setTimeout: setTimeout, | |
done: done, | |
assert: assert | |
}; | |
script.runInNewContext(context); | |
}); | |
it('late defs setTimeout', function (done) { | |
var str = '"use strict";var module = {exports:{}};'; | |
str += process; | |
str += 'var setTimeout = hiddenSetTimeout;process.nextTick(function () {assert.ok(true);done();})'; | |
var script = new vm.Script(str); | |
var context = { | |
clearTimeout: clearTimeout, | |
hiddenSetTimeout: setTimeout, | |
done: done, | |
assert: assert | |
}; | |
script.runInNewContext(context); | |
}); | |
it('late defs clearTimeout', function (done) { | |
var str = '"use strict";var module = {exports:{}};'; | |
str += process; | |
str += 'var clearTimeout = hiddenClearTimeout;process.nextTick(function () {assert.ok(true);done();})'; | |
var script = new vm.Script(str); | |
var context = { | |
hiddenClearTimeout: clearTimeout, | |
setTimeout: setTimeout, | |
done: done, | |
assert: assert | |
}; | |
script.runInNewContext(context); | |
}); | |
it('late defs setTimeout and then redefine', function (done) { | |
var str = '"use strict";var module = {exports:{}};'; | |
str += process; | |
str += 'var setTimeout = hiddenSetTimeout;process.nextTick(function () {setTimeout = function (){throw new Error("foo")};hiddenSetTimeout(function(){process.nextTick(function (){assert.ok(true);done();});});});'; | |
var script = new vm.Script(str); | |
var context = { | |
clearTimeout: clearTimeout, | |
hiddenSetTimeout: setTimeout, | |
done: done, | |
assert: assert | |
}; | |
script.runInNewContext(context); | |
}); | |
}); | |
} |