@samitouri / QOS-React-2 / commits / ad0d9e4761

consoleLoggerMiddleware handles coverage logs

Thomas Aylott committed Nov 15, 2013 at 16:29 UTC ad0d9e476174ab72d6e8a2dc08e79bf0d3450a38
1 file changed +38 -1
grunt/config/server.js
+38 -1
@@ -1,6 +1,42 @@
1 'use strict';
2
3 -module.exports = function(grunt) {
3 +module.exports = function(grunt){
4 + var coverageWriteStream;
5 +
6 + grunt.task.registerTask('finalize-coverage-stream', function(){
7 + var done = this.async();
8 + coverageWriteStream.once('close', done);
9 + coverageWriteStream.end();
10 + coverageWriteStream = null;
11 + });
12 +
13 + function consoleLoggerMiddleware(req, res, next) {
14 + if (!(req.method == 'POST'
15 + && req._parsedUrl.pathname.replace(/\//g,'') == 'console'
16 + && Array.isArray(req.body))
17 + ) {
18 + return next();
19 + }
20 + res.write('<!doctype html><meta charset=utf-8>');
21 + res.end('Got it, thanks!');
22 +
23 + req.body.forEach(function(log){
24 + if (log.message.indexOf('not ok ') === 0) log.type = 'error';
25 + else if (log.message.indexOf('ok ') === 0) log.type = 'ok';
26 + else if (log.message.indexOf('COVER') === 0) log.type = 'coverage';
27 + else if (log.message.indexOf('DONE\t') === 0) log.type = 'coverage done';
28 +
29 + if (log.type == 'error') grunt.log.error(log.message);
30 + else if (log.type == 'ok') grunt.log.ok(log.message);
31 + else if (log.type == 'log') grunt.log.writeln(log.message);
32 + else if (log.type == 'coverage') {
33 + if (!coverageWriteStream) coverageWriteStream = require('fs').createWriteStream(__dirname + '/../../coverage.log');
34 + coverageWriteStream.write(log.message + '\n');
35 + }
36 + else if (log.type == 'coverage done') grunt.task.run('finalize-coverage-stream');
37 + else grunt.verbose.writeln(log);
38 + });
39 + }
40
41 function testResultLoggerMiddleware(req, res, next) {
42 if (!(req.method == 'POST' && req._parsedUrl.pathname.indexOf('/reportTestResults') === 0)) {
@@ -41,6 +77,7 @@ module.exports = function(grunt) {
77
78 return [
79 connect.json(),
80 + consoleLoggerMiddleware,
81 testResultLoggerMiddleware,
82
83 connect.logger({format:'[:user-agent][:timestamp] :method :url', stream:grunt.verbose}),