You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.8 KiB
85 lines
1.8 KiB
|
|
/** |
|
* Module dependencies. |
|
*/ |
|
|
|
var Base = require('./base') |
|
, cursor = Base.cursor |
|
, color = Base.color; |
|
|
|
/** |
|
* Expose `Progress`. |
|
*/ |
|
|
|
exports = module.exports = Progress; |
|
|
|
/** |
|
* General progress bar color. |
|
*/ |
|
|
|
Base.colors.progress = 90; |
|
|
|
/** |
|
* Initialize a new `Progress` bar test reporter. |
|
* |
|
* @param {Runner} runner |
|
* @param {Object} options |
|
* @api public |
|
*/ |
|
|
|
function Progress(runner, options) { |
|
Base.call(this, runner); |
|
|
|
var self = this |
|
, options = options || {} |
|
, stats = this.stats |
|
, width = Base.window.width * .50 | 0 |
|
, total = runner.total |
|
, complete = 0 |
|
, max = Math.max; |
|
|
|
// default chars |
|
options.open = options.open || '['; |
|
options.complete = options.complete || '▬'; |
|
options.incomplete = options.incomplete || '⋅'; |
|
options.close = options.close || ']'; |
|
options.verbose = false; |
|
|
|
// tests started |
|
runner.on('start', function(){ |
|
console.log(); |
|
cursor.hide(); |
|
}); |
|
|
|
// tests complete |
|
runner.on('test end', function(){ |
|
var incomplete = total - complete |
|
, percent = complete++ / total |
|
, n = width * percent | 0 |
|
, i = width - n; |
|
|
|
cursor.CR(); |
|
process.stdout.write('\033[J'); |
|
process.stdout.write(color('progress', ' ' + options.open)); |
|
process.stdout.write(Array(n).join(options.complete)); |
|
process.stdout.write(Array(i).join(options.incomplete)); |
|
process.stdout.write(color('progress', options.close)); |
|
if (options.verbose) { |
|
process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); |
|
} |
|
}); |
|
|
|
// tests are complete, output some stats |
|
// and the failures if any |
|
runner.on('end', function(){ |
|
cursor.show(); |
|
console.log(); |
|
self.epilogue(); |
|
}); |
|
} |
|
|
|
/** |
|
* Inherit from `Base.prototype`. |
|
*/ |
|
|
|
Progress.prototype.__proto__ = Base.prototype;
|
|
|