added 'maybe_start_server' grunt task that will ping to see if a kibana dev server is running, and start one if not. Allows us to run the unit tests via npm test when grunt dev is already running.

This commit is contained in:
Spencer Alger 2014-03-06 17:37:43 -07:00
parent 67dc27511a
commit e2b8625dbf
5 changed files with 51 additions and 5 deletions

View file

@ -41,6 +41,13 @@ module.exports = function (grunt) {
// standard static middleware reading from the root
stack.push(connect.static(root));
stack.push(function (req, res, next) {
if (req.method !== 'HEAD' || req.url !== '/') return next();
res.statusCode === 200;
res.setHeader('Pong', 'Kibana 4 Dev Server');
res.end();
});
// redirect requests for '/' to '/src/'
stack.push(function (req, res, next) {
if (req.url !== '/') return next();

View file

@ -21,7 +21,7 @@ module.exports = function (grunt) {
},
clientside_jade: {
files: [
'<%= testUtilsDir %>/istanbul_reporter/report.clientside-jade'
'<%= testUtilsDir %>/istanbul_reporter/report.clientside.jade'
],
tasks: ['jade:clientside']
}

View file

@ -2,7 +2,7 @@ module.exports = function (grunt) {
grunt.registerTask('dev', [
'less',
'jade',
'connect:dev',
'maybe_start_server',
'watch'
]);
};

View file

@ -0,0 +1,39 @@
module.exports = function (grunt) {
grunt.registerTask('maybe_start_server', function () {
var http = require('http');
var req = http.request({
method: 'HEAD',
path: '/',
host: 'localhost',
port: 8000
});
function onResponse(res) {
if (res.headers.pong === 'Kibana 4 Dev Server') {
grunt.log.write('server already started');
} else {
grunt.log.error('another server is already running at localhost:8000!');
}
done(res);
}
function onError() {
grunt.task.run(['connect:dev']);
done();
}
var done = (function (cb) {
return function (res) {
req.removeListener('error', onError);
req.removeListener('response', onResponse);
if (res) res.socket.destroy();
cb();
};
})(this.async());
req.on('error', onError);
req.on('response', onResponse);
req.end();
});
};

View file

@ -2,19 +2,19 @@ module.exports = function (grunt) {
/* jshint scripturl:true */
grunt.registerTask('test', [
'jshint',
'connect:dev',
'maybe_start_server',
'jade',
'mocha:unit'
]);
grunt.registerTask('coverage', [
'blanket',
'connect:dev',
'maybe_start_server',
'mocha:coverage'
]);
grunt.registerTask('test:watch', [
'connect:dev',
'maybe_start_server',
'watch:test'
]);
};