/* global describe, it */ var exec = require('child_process').exec, expect = require('chai').expect, assert = require('assert') require('chai').should() require('tap').mochaGlobals() describe('signal-exit', function () { it('receives an exit event when a process exits normally', function (done) { exec(process.execPath + ' ./test/fixtures/end-of-execution.js', function (err, stdout, stderr) { expect(err).to.equal(null) stdout.should.match(/reached end of execution, 0, null/) done() }) }) it('receives an exit event when a process is terminated with sigint', function (done) { exec(process.execPath + ' ./test/fixtures/sigint.js', function (err, stdout, stderr) { assert(err) stdout.should.match(/exited with sigint, null, SIGINT/) done() }) }) it('receives an exit event when a process is terminated with sigterm', function (done) { exec(process.execPath + ' ./test/fixtures/sigterm.js', function (err, stdout, stderr) { assert(err) stdout.should.match(/exited with sigterm, null, SIGTERM/) done() }) }) it('receives an exit event when process.exit() is called', function (done) { exec(process.execPath + ' ./test/fixtures/exit.js', function (err, stdout, stderr) { err.code.should.equal(32) stdout.should.match(/exited with process\.exit\(\), 32, null/) done() }) }) it('does not exit if user handles signal', function (done) { exec(process.execPath + ' ./test/fixtures/signal-listener.js', function (err, stdout, stderr) { assert(err) assert.equal(stdout, 'exited calledListener=4, code=null, signal="SIGHUP"\n') done() }) }) it('ensures that if alwaysLast=true, the handler is run last (signal)', function (done) { exec(process.execPath + ' ./test/fixtures/signal-last.js', function (err, stdout, stderr) { assert(err) stdout.should.match(/first counter=1/) stdout.should.match(/last counter=2/) done() }) }) it('ensures that if alwaysLast=true, the handler is run last (normal exit)', function (done) { exec(process.execPath + ' ./test/fixtures/exit-last.js', function (err, stdout, stderr) { assert.ifError(err) stdout.should.match(/first counter=1/) stdout.should.match(/last counter=2/) done() }) }) it('works when loaded multiple times', function (done) { exec(process.execPath + ' ./test/fixtures/multiple-load.js', function (err, stdout, stderr) { assert(err) stdout.should.match(/first counter=1, code=null, signal="SIGHUP"/) stdout.should.match(/first counter=2, code=null, signal="SIGHUP"/) stdout.should.match(/last counter=3, code=null, signal="SIGHUP"/) stdout.should.match(/last counter=4, code=null, signal="SIGHUP"/) done() }) }) // TODO: test on a few non-OSX machines. it('removes handlers when fully unwrapped', function (done) { exec(process.execPath + ' ./test/fixtures/unwrap.js', function (err, stdout, stderr) { // on Travis CI no err.signal is populated but // err.code is 129 (which I think tends to be SIGHUP). var expectedCode = process.env.TRAVIS ? 129 : null assert(err) if (!process.env.TRAVIS) err.signal.should.equal('SIGHUP') expect(err.code).to.equal(expectedCode) done() }) }) it('does not load() or unload() more than once', function (done) { exec(process.execPath + ' ./test/fixtures/load-unload.js', function (err, stdout, stderr) { assert.ifError(err) done() }) }) it('handles uncatchable signals with grace and poise', function (done) { exec(process.execPath + ' ./test/fixtures/sigkill.js', function (err, stdout, stderr) { assert.ifError(err) done() }) }) })
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19553 | swellard | Move and rename clients | ||
//guest/perforce_software/helix-web-services/main/source/clients/2016.1.0/javascript/node_modules/signal-exit/test/signal-exit-test.js | |||||
#1 | 18810 | tjuricek |
First-pass at JavaScript client SDK. JavaScript requires Node with Gulp to "browserfy" the library. It's the easiest way I found to use the swagger-js project; bundle up a wrapping method. There is no JavaScript reference guide. The swagger-js doesn't really document what they do very well, actually. Overall I'm not particularly impressed by swagger-js, it was hard to even figure out what the right method syntax was. We may want to invest time in doing it better. This required setting CORS response headers, which are currently defaulted to a fairly insecure setting. |