| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | 
							- 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);
 
-     });
 
-   });
 
- }
 
 
  |