code: function List(runner) {
    Base.call(this, runner);
  
    var self = this;
    var stats = this.stats;
    var total = runner.total;
  
    runner.on('start', function(){
      console.log(JSON.stringify( ['start', { total: total }] ));
    });
  
    runner.on('suite', function(suite){
      if (suite.id != undefined) {
        console.log(JSON.stringify( ['suite', suite_info(suite)] ));
      }
    });
  
    runner.on('test', function(test){
      console.log(JSON.stringify( ['test', info(test)] ));
    });
  
    runner.on('pass', function(test){
      console.log(JSON.stringify( ['pass', pass(test)] ));
    });
  
    runner.on('fail', function(test, err){
      process.stdout.write('\n---------------------------- FAIL ----------------------------\n');
      process.stdout.write('Title: ' + test.title + '\n');
      process.stdout.write(err.stack);
      process.stdout.write('---------------------------- FAIL ----------------------------\n\n');    
      
      test = fail(test, err);
      console.log(JSON.stringify( ['fail', test] ));
    });
  
    runner.on('test end', function(test){
      console.log(JSON.stringify( ['test end', {id: test.id}] ));
    });
  
    runner.on('suite end', function(suite){
      if (suite.id != undefined) {
        console.log(JSON.stringify( ['suite end', {id: suite.id}] ));
      }
    });
  
    runner.on('end', function(){
      console.log(JSON.stringify( ['end', self.stats] ));
    });
  }
docs: Initialize a new `List` test reporter.
  
  @param {Runner} runner
  @api public