Add a task to run the tests once with PhantomJS
The test.js task starts the development server and runs the tests in PhantomJS. As mentioned in the readme, when running the tests continuously during development, it is more convenient to start the dev server and visit the root of the test directory in your browser. Later we can bring in Karma to drive PhantomJS and other browsers, but this simple "run once" task is useful for the CI job.
This commit is contained in:
134
tasks/serve.js
134
tasks/serve.js
@@ -12,62 +12,88 @@ var nomnom = require('nomnom');
|
||||
|
||||
var log = closure.log;
|
||||
|
||||
var options = nomnom.options({
|
||||
port: {
|
||||
abbr: 'p',
|
||||
default: 3000,
|
||||
help: 'Port for incoming connections',
|
||||
metavar: 'PORT'
|
||||
},
|
||||
loglevel: {
|
||||
abbr: 'l',
|
||||
choices: ['silly', 'verbose', 'info', 'warn', 'error'],
|
||||
default: 'info',
|
||||
help: 'Log level',
|
||||
metavar: 'LEVEL'
|
||||
}
|
||||
}).parse();
|
||||
|
||||
|
||||
/** @type {string} */
|
||||
log.level = options.loglevel;
|
||||
|
||||
log.info('ol', 'Parsing dependencies ...');
|
||||
var manager = new closure.Manager({
|
||||
closure: true, // use the bundled Closure Library
|
||||
lib: [
|
||||
'src/**/*.js',
|
||||
'test/spec/**/*.test.js'
|
||||
],
|
||||
main: 'examples/*.js'
|
||||
});
|
||||
manager.on('error', function(e) {
|
||||
log.error('ol', e.message);
|
||||
});
|
||||
manager.on('ready', function() {
|
||||
var server = new closure.Server({
|
||||
manager: manager,
|
||||
loader: /^\/\w+\/loader.js/,
|
||||
getMain: function(req) {
|
||||
var main;
|
||||
var query = url.parse(req.url, true).query;
|
||||
if (query.id) {
|
||||
var referer = req.headers.referer;
|
||||
if (referer) {
|
||||
var from = path.join(process.cwd(),
|
||||
path.dirname(url.parse(referer).pathname));
|
||||
main = path.resolve(from, query.id + '.js');
|
||||
}
|
||||
}
|
||||
return main;
|
||||
/**
|
||||
* Create a debug server for ol and Closure Library sources.
|
||||
* @param {function(Error, closure.Server)} callback Callback.
|
||||
*/
|
||||
var createServer = exports.createServer = function(callback) {
|
||||
var server;
|
||||
var manager = new closure.Manager({
|
||||
lib: [
|
||||
'src/**/*.js',
|
||||
'test/spec/**/*.test.js'
|
||||
],
|
||||
main: 'examples/*.js'
|
||||
});
|
||||
manager.on('error', function(err) {
|
||||
if (server) {
|
||||
log.error('serve', err.message);
|
||||
} else {
|
||||
callback(err);
|
||||
}
|
||||
});
|
||||
server.listen(options.port, function() {
|
||||
log.info('ol', 'Listening on http://localhost:' +
|
||||
options.port + '/ (Ctrl+C to stop)');
|
||||
manager.on('ready', function() {
|
||||
server = new closure.Server({
|
||||
manager: manager,
|
||||
loader: /^\/\w+\/loader.js/,
|
||||
getMain: function(req) {
|
||||
var main;
|
||||
var query = url.parse(req.url, true).query;
|
||||
if (query.id) {
|
||||
var referer = req.headers.referer;
|
||||
if (referer) {
|
||||
var from = path.join(process.cwd(),
|
||||
path.dirname(url.parse(referer).pathname));
|
||||
main = path.resolve(from, query.id + '.js');
|
||||
}
|
||||
}
|
||||
return main;
|
||||
}
|
||||
});
|
||||
callback(null, server);
|
||||
});
|
||||
server.on('error', function(err) {
|
||||
log.error('ol', 'Server failed to start: ' + err.message);
|
||||
process.exit(1);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* If running this module directly start the server.
|
||||
*/
|
||||
if (require.main === module) {
|
||||
var options = nomnom.options({
|
||||
port: {
|
||||
abbr: 'p',
|
||||
default: 3000,
|
||||
help: 'Port for incoming connections',
|
||||
metavar: 'PORT'
|
||||
},
|
||||
loglevel: {
|
||||
abbr: 'l',
|
||||
choices: ['silly', 'verbose', 'info', 'warn', 'error'],
|
||||
default: 'info',
|
||||
help: 'Log level',
|
||||
metavar: 'LEVEL'
|
||||
}
|
||||
}).parse();
|
||||
|
||||
/** @type {string} */
|
||||
log.level = options.loglevel;
|
||||
|
||||
log.info('serve', 'Parsing dependencies ...');
|
||||
createServer(function(err, server) {
|
||||
if (err) {
|
||||
log.error('serve', 'Parsing failed');
|
||||
log.error('serve', err.message);
|
||||
process.exit(1);
|
||||
}
|
||||
server.listen(options.port, function() {
|
||||
log.info('serve', 'Listening on http://localhost:' +
|
||||
options.port + '/ (Ctrl+C to stop)');
|
||||
});
|
||||
server.on('error', function(err) {
|
||||
log.error('serve', 'Server failed to start: ' + err.message);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user