UNPKG

1.35 kBJavaScriptView Raw
1'use strict'
2
3const path = require('path')
4const binpath = path.resolve(__dirname, '../bin')
5const util = require('util')
6const diags = require('./diags.js')
7
8class TestPoint {
9 constructor (ok, message, extra) {
10 if (typeof ok !== 'boolean')
11 throw new TypeError('ok must be boolean')
12
13 if (typeof message !== 'string')
14 throw new TypeError('message must be a string')
15
16 extra = extra || {}
17
18 this.ok = ok ? 'ok ' : 'not ok '
19 this.message = tpMessage(message.trim(), extra)
20 }
21}
22
23const tpMessage = (message, extra) => {
24 if (message)
25 message = ' - ' + message
26
27 // replace \r\n with one space, \t with 2, separately
28 message = message.replace(/[\n\r]/g, ' ').replace(/\t/g, ' ')
29
30 if (extra.skip) {
31 message += ' # SKIP'
32 if (typeof extra.skip === 'string')
33 message += ' ' + extra.skip
34 } else if (extra.todo) {
35 message += ' # TODO'
36 if (typeof extra.todo === 'string')
37 message += ' ' + extra.todo
38 } else if (extra.time)
39 message += ' # time=' + extra.time + 'ms'
40
41 const diagYaml = extra.diagnostic ? diags(extra) : ''
42 message += diagYaml
43
44 if (extra.tapChildBuffer || extra.tapChildBuffer === '') {
45 if (!diagYaml)
46 message += ' '
47 message += '{\n' + extra.tapChildBuffer.trimRight() + '\n}\n'
48 }
49
50 message += '\n'
51
52 return message
53}
54
55module.exports = TestPoint