12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * Module dependencies.
- */
- var Base = require('./base')
- , cursor = Base.cursor
- , color = Base.color;
- /**
- * Expose `Landing`.
- */
- exports = module.exports = Landing;
- /**
- * Airplane color.
- */
- Base.colors.plane = 0;
- /**
- * Airplane crash color.
- */
- Base.colors['plane crash'] = 31;
- /**
- * Runway color.
- */
- Base.colors.runway = 90;
- /**
- * Initialize a new `Landing` reporter.
- *
- * @param {Runner} runner
- * @api public
- */
- function Landing(runner) {
- Base.call(this, runner);
- var self = this
- , stats = this.stats
- , width = Base.window.width * .75 | 0
- , total = runner.total
- , stream = process.stdout
- , plane = color('plane', '✈')
- , crashed = -1
- , n = 0;
- function runway() {
- var buf = Array(width).join('-');
- return ' ' + color('runway', buf);
- }
- runner.on('start', function(){
- stream.write('\n ');
- cursor.hide();
- });
- runner.on('test end', function(test){
- // check if the plane crashed
- var col = -1 == crashed
- ? width * ++n / total | 0
- : crashed;
- // show the crash
- if ('failed' == test.state) {
- plane = color('plane crash', '✈');
- crashed = col;
- }
- // render landing strip
- stream.write('\u001b[4F\n\n');
- stream.write(runway());
- stream.write('\n ');
- stream.write(color('runway', Array(col).join('⋅')));
- stream.write(plane)
- stream.write(color('runway', Array(width - col).join('⋅') + '\n'));
- stream.write(runway());
- stream.write('\u001b[0m');
- });
- runner.on('end', function(){
- cursor.show();
- console.log();
- self.epilogue();
- });
- }
- /**
- * Inherit from `Base.prototype`.
- */
- Landing.prototype.__proto__ = Base.prototype;
|