forked from nodejs/core-validate-commit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtap.js
118 lines (99 loc) · 2.11 KB
/
tap.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import util from 'node:util'
import { Readable } from 'node:stream'
class Test {
constructor (tap, name) {
this.tap = tap
this.name = name
this._count = 0
this._passes = 0
this._failures = 0
this._skips = 0
this.begin()
}
pass (msg) {
this.tap.write(`ok ${++this._count} ${msg}`)
this._passes++
this.tap.pass()
}
fail (msg, extra) {
this.tap.write(`not ok ${++this._count} ${msg}`)
if (extra) {
this.tap.write(' ---')
if (typeof extra === 'object') {
extra = util.inspect(extra)
}
if (typeof extra === 'string') {
extra.split(/\n/).forEach((item) => {
this.tap.write(` ${item}`)
})
}
this.tap.write(' ...')
}
this._failures++
this.tap.fail()
}
skip (msg) {
this.tap.write(`ok ${++this._count} ${msg} # SKIP`)
this._skips++
this.tap.skip()
}
begin () {
this.tap.write(`# ${this.name}`)
}
}
export default class Tap extends Readable {
constructor () {
super()
this._wroteVersion = false
this._count = 0
this._passes = 0
this._failures = 0
this._skips = 0
}
get status () {
if (this._failures) {
return 'fail'
}
return 'pass'
}
writeVersion () {
if (!this._wroteVersion) {
this.write('TAP version 13')
this._wroteVersion = true
}
}
pass () {
this._passes++
this._count++
}
fail () {
this._failures++
this._count++
}
skip () {
this._skips++
this._count++
}
write (str = '') {
this.push(`${str}\n`)
}
test (name) {
const t = new Test(this, name)
return t
}
_read () {}
end () {
this.write()
this.write(`0..${this._count}`)
this.write(`# tests ${this._count}`)
if (this._passes) {
this.write(`# pass ${this._passes}`)
}
if (this._failures) {
this.write(`# fail ${this._failures}`)
this.write('# Please review the commit message guidelines:')
this.write('# https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines')
}
this.push(null)
}
}