Name: js-handler/node_modules/nodeunit/node_modules/tap/test/segv.js 
1:
var test = require('../').test
2:
var Runner = require('../lib/tap-runner.js')
3:
var TC = require('../lib/tap-consumer.js')
4:
 
5:
var fs = require('fs')
6:
var spawn = require('child_process').spawn
7:
var segv =
8:
    'int main (void) {\n' +
9:
    '   char *s = "hello world";\n' +
10:
    '   *s = \'H\';\n' +
11:
    '}\n'
12:
var compiled = false
13:
 
14:
test('setup', function (t) {
15:
  fs.writeFile('segv.c', segv, 'utf8', function (er) {
16:
    if (er)
17:
      throw er
18:
    var cp = spawn('gcc', ['segv.c', '-o', 'segv'])
19:
    cp.on('exit', function (code, sig) {
20:
      if (code !== 0) {
21:
        t.bailout('failed to compile segv program')
22:
        return
23:
      }
24:
      t.pass('compiled seg faulter')
25:
      t.end()
26:
    })
27:
  })
28:
})
29:
 
30:
test('segv', function (t) {
31:
  var r = new Runner({argv:{remain:['./segv']}})
32:
  var tc = new TC()
33:
  var expect =
34:
      [ 'TAP version 13'
35:
      , './segv'
36:
      , { 'id': 1,
37:
          'ok': false,
38:
          'name': ' ././segv',
39:
          'exit': null,
40:
          'timedOut': true,
41:
          'signal': 'SIGTERM',
42:
          'command': '"./segv"' }
43:
      , 'tests 1'
44:
      , 'fail  1' ]
45:
  r.pipe(tc)
46:
  tc.on('data', function (d) {
47:
    var e = expect.shift()
48:
 
49:
    // specific signal can be either term or bus
50:
    if (d.signal && e.signal)
51:
      e.signal = d.signal === "SIGTERM" || d.signal === "SIGBUS" ?
52:
        d.signal : e.signal
53:
 
54:
    t.same(d, e)
55:
  })
56:
  tc.on('end', function () {
57:
    t.equal(expect.length, 0)
58:
    t.end()
59:
  })
60:
})
61:
 
62:
test('cleanup', function (t) {
63:
  fs.unlink('segv.c', function () {
64:
    fs.unlink('segv', function () {
65:
      t.pass('cleaned up')
66:
      t.end()
67:
    })
68:
  })
69:
})