1
1
'use strict' ;
2
- const format = require ( 'util' ) . format ;
3
- const indentString = require ( 'indent-string' ) ;
2
+ const supertap = require ( 'supertap' ) ;
4
3
const stripAnsi = require ( 'strip-ansi' ) ;
5
- const yaml = require ( 'js-yaml' ) ;
6
4
7
5
function dumpError ( error , includeMessage ) {
8
6
const obj = Object . assign ( { } , error . object ) ;
@@ -32,7 +30,7 @@ function dumpError(error, includeMessage) {
32
30
obj . at = error . stack . split ( '\n' ) [ 0 ] ;
33
31
}
34
32
35
- return ` ---\n ${ indentString ( yaml . safeDump ( obj ) . trim ( ) , 4 ) } \n ...` ;
33
+ return obj ;
36
34
}
37
35
38
36
class TapReporter {
@@ -41,79 +39,42 @@ class TapReporter {
41
39
}
42
40
43
41
start ( ) {
44
- return 'TAP version 13' ;
42
+ return supertap . start ( ) ;
45
43
}
46
44
47
45
test ( test ) {
48
- const output = [ ] ;
49
-
50
- let directive = '' ;
51
- const passed = test . todo ? 'not ok' : 'ok' ;
52
-
53
- if ( test . todo ) {
54
- directive = '# TODO' ;
55
- } else if ( test . skip ) {
56
- directive = '# SKIP' ;
57
- }
58
-
59
- const title = stripAnsi ( test . title ) ;
60
-
61
- const appendLogs = ( ) => {
62
- if ( test . logs ) {
63
- test . logs . forEach ( log => {
64
- const logLines = indentString ( log , 4 ) ;
65
- const logLinesWithLeadingFigure = logLines . replace (
66
- / ^ { 4 } / ,
67
- ' * '
68
- ) ;
69
-
70
- output . push ( logLinesWithLeadingFigure ) ;
71
- } ) ;
72
- }
73
- } ;
74
-
75
- output . push ( `# ${ title } ` ) ;
76
-
77
- if ( test . error ) {
78
- output . push ( format ( 'not ok %d - %s' , ++ this . i , title ) ) ;
79
- appendLogs ( ) ;
80
- output . push ( dumpError ( test . error , true ) ) ;
81
- } else {
82
- output . push ( format ( '%s %d - %s %s' , passed , ++ this . i , title , directive ) . trim ( ) ) ;
83
- appendLogs ( ) ;
84
- }
85
-
86
- return output . join ( '\n' ) ;
46
+ return supertap . test ( test . title , {
47
+ passed : ! test . error ,
48
+ index : ++ this . i ,
49
+ todo : test . todo ,
50
+ skip : test . skip ,
51
+ comment : test . logs ,
52
+ error : test . error ? dumpError ( test . error , true ) : null
53
+ } ) ;
87
54
}
88
55
89
56
unhandledError ( err ) {
90
- const output = [
91
- `# ${ err . message } ` ,
92
- format ( 'not ok %d - %s' , ++ this . i , err . message )
93
- ] ;
57
+ let error ;
58
+
94
59
// AvaErrors don't have stack traces
95
60
if ( err . type !== 'exception' || err . name !== 'AvaError' ) {
96
- output . push ( dumpError ( err , false ) ) ;
61
+ error = dumpError ( err , false ) ;
97
62
}
98
63
99
- return output . join ( '\n' ) ;
64
+ return supertap . test ( err . message , {
65
+ passed : false ,
66
+ index : ++ this . i ,
67
+ error
68
+ } ) ;
100
69
}
101
70
102
71
finish ( runStatus ) {
103
- const output = [
104
- '' ,
105
- '1..' + ( runStatus . passCount + runStatus . failCount + runStatus . skipCount ) ,
106
- '# tests ' + ( runStatus . passCount + runStatus . failCount + runStatus . skipCount ) ,
107
- '# pass ' + runStatus . passCount
108
- ] ;
109
-
110
- if ( runStatus . skipCount > 0 ) {
111
- output . push ( `# skip ${ runStatus . skipCount } ` ) ;
112
- }
113
-
114
- output . push ( '# fail ' + ( runStatus . failCount + runStatus . rejectionCount + runStatus . exceptionCount ) , '' ) ;
115
-
116
- return output . join ( '\n' ) ;
72
+ return supertap . finish ( {
73
+ passed : runStatus . passCount ,
74
+ failed : runStatus . failCount ,
75
+ skipped : runStatus . skipCount ,
76
+ crashed : runStatus . rejectionCount + runStatus . exceptionCount
77
+ } ) ;
117
78
}
118
79
119
80
write ( str ) {
0 commit comments