1 |
|
2 | require('es5-shim')
|
3 | require('es5-shim/es5-sham')
|
4 |
|
5 | var spec = require('../')()
|
6 |
|
7 | require('./specs/test')(spec)
|
8 | require('./specs/suite')(spec)
|
9 | require('./specs/runner')(spec)
|
10 |
|
11 | function log() {
|
12 | console.log([].join.call(arguments, ' '))
|
13 | }
|
14 |
|
15 | function verdict(result) {
|
16 | return result.verdict == 'success'? '[OK] '
|
17 | : result.verdict == 'failure'? '[FAIL]'
|
18 | : result.verdict == 'ignored'? '[?] '
|
19 | : '[...] '
|
20 | }
|
21 |
|
22 | function fullTitle(test) {
|
23 | var title = test.title || ''
|
24 | if (test.parent) title = [fullTitle(test.parent), title].filter(Boolean).join(' ')
|
25 | return title
|
26 | }
|
27 |
|
28 | function pad(n, s) {
|
29 | var before = Array(n + 1).join(' ')
|
30 | return s.split(/\r\n|\r|\n/)
|
31 | .map(function(a){ return before + a })
|
32 | .join('\n')
|
33 | }
|
34 |
|
35 | function describeFailure(ex) {
|
36 | return [' ---'
|
37 | ,' type: ' + ex.name
|
38 | ,' message: >'
|
39 | , pad(6, ex.message)
|
40 | ,' stack: | '
|
41 | , pad(6, ex.stack)
|
42 | ,' ...'
|
43 | ,' '
|
44 | ].join('\n')
|
45 | }
|
46 |
|
47 | log('TAP version 13')
|
48 | spec.run(function(report) {
|
49 | var i = 0;
|
50 |
|
51 | report.on('success', function(ev, result) {
|
52 | log('ok', ++i, fullTitle(result.test))
|
53 | })
|
54 |
|
55 | report.on('failure', function(ev, result) {
|
56 | log('not ok', ++i, fullTitle(result.test))
|
57 | log(describeFailure(result.exception))
|
58 | })
|
59 |
|
60 | report.on('ignored', function(ev, result) {
|
61 | log('# ignored:', fullTitle(result.test))
|
62 | })
|
63 |
|
64 | report.on('done', function(ev, results) {
|
65 | log('')
|
66 | log('1..' + i)
|
67 | log('# tests', i)
|
68 | log('# pass', results.passed.length)
|
69 | log('# fail', results.failed.length)
|
70 | log('# ignored', results.ignored.length)
|
71 |
|
72 | if (results.failed.length && typeof process != 'undefined')
|
73 | process.exit(1)
|
74 | })
|
75 | }) |
\ | No newline at end of file |