@@ -5,7 +5,8 @@ var http = require("http"),
5
5
qs = require ( "querystring" ) ,
6
6
utils = require ( "./utils" ) ,
7
7
config = require ( '../lib/config' ) ,
8
- exec = require ( 'child_process' ) . exec ;
8
+ exec = require ( 'child_process' ) . exec ,
9
+ chalk = require ( 'chalk' ) ;
9
10
10
11
var mimeTypes = {
11
12
"html" : "text/html" ,
@@ -111,6 +112,26 @@ exports.Server = function Server(bsClient, workers) {
111
112
return JSON . parse ( qs . parse ( body ) . data . escapeSpecialChars ( ) ) ;
112
113
}
113
114
115
+ function formatTraceback ( details ) {
116
+ // looks like QUnit data
117
+ if ( details . testName ) {
118
+ var output = "'" + details . testName + "' failed" ;
119
+ if ( details . message ) {
120
+ output += ", " + details . message ;
121
+ }
122
+ if ( details . actual && details . expected ) {
123
+ output += "\n" + chalk . blue ( "Expected: " ) + details . expected +
124
+ "\n" + chalk . blue ( " Actual: " ) + details . actual ;
125
+ }
126
+ if ( details . source ) {
127
+ output += "\n" + chalk . blue ( " Source: " ) + "" ;
128
+ output += details . source . split ( "\n" ) . join ( "\n\t " ) ;
129
+ }
130
+ return output ;
131
+ }
132
+ return details ;
133
+ }
134
+
114
135
handlers = {
115
136
"_progress" : function progressHandler ( uri , body , request , response ) {
116
137
var uuid = request . headers [ 'x-worker-uuid' ] ;
@@ -119,13 +140,13 @@ exports.Server = function Server(bsClient, workers) {
119
140
try {
120
141
query = parseBody ( body ) ;
121
142
} catch ( e ) {
122
- console . log ( "[%s] Exception in parsing QUnit log" , worker . string )
123
- console . log ( "[%s] Log: " + qs . parse ( body ) . data , worker . string )
143
+ console . log ( "[%s] Exception in parsing log" , worker . string ) ;
144
+ console . log ( "[%s] Log: " + qs . parse ( body ) . data , worker . string ) ;
124
145
}
125
146
126
147
if ( query . tracebacks ) {
127
148
query . tracebacks . forEach ( function ( traceback ) {
128
- console . log ( "[%s] Error:" , worker . string , traceback ) ;
149
+ console . log ( chalk . red ( "[%s] Error:" ) , worker . string , formatTraceback ( traceback ) ) ;
129
150
} ) ;
130
151
}
131
152
response . end ( ) ;
@@ -148,8 +169,8 @@ exports.Server = function Server(bsClient, workers) {
148
169
console . log ( traceback ) ;
149
170
} ) ;
150
171
}
151
-
152
- console . log ( "[%s] Completed in %d milliseconds. %d of %d passed, %d failed." , request . headers [ 'x-browser-string' ] , query . runtime , query . passed , query . total , query . failed ) ;
172
+ var color = query . failed ? "red" : "green" ;
173
+ console . log ( chalk [ color ] ( "[%s] Completed in %d milliseconds. %d of %d passed, %d failed." ) , request . headers [ 'x-browser-string' ] , query . runtime , query . passed , query . total , query . failed ) ;
153
174
status += query . failed ;
154
175
}
155
176
@@ -170,7 +191,8 @@ exports.Server = function Server(bsClient, workers) {
170
191
delete workers [ uuid ] ;
171
192
172
193
if ( utils . objectSize ( workers ) === 0 ) {
173
- console . log ( "All tests done, failures: %d." , status ) ;
194
+ var color = status > 0 ? "red" : "green" ;
195
+ console . log ( chalk [ color ] ( "All tests done, failures: %d." ) , status ) ;
174
196
175
197
if ( status > 0 ) {
176
198
status = 1 ;
0 commit comments