anchor.diff:  void _unittestParserConfig(ArgParser parser) {
     parser.addFlag(_listFlag, abbr: 'l', defaultsTo: false,
         help: "Just list the test case names. Don't run them. Any filter is still applied.");
  +  parser.addOption(_summaryFlag, abbr: 's',
  +      help: 'Summarize the results of individual tests.',
  +      allowed: [_summaryAll, _summaryFail, _summaryPass],
  +      allowMultiple: false);
   }
   
   class _HopTestConfiguration implements unittest.Configuration {
     final Completer<bool> _completer = new Completer<bool>();
     final TaskContext _context;
  +  final bool failSummary;
  +  final bool passSummary;
   
  -  _HopTestConfiguration(this._context);
  +  _HopTestConfiguration(this._context, this.failSummary, this.passSummary);
   
     Future<bool> get future => _completer.future;
   
  
positive.code:               String uncaughtError) {
      final bool success = failed == 0 && errors == 0 && uncaughtError == null;
      final message = "$passed PASSED, $failed FAILED, $errors ERRORS";
      if(success) {
        _context.info(message);
      } else {
  
negative.code: part of hop_tasks;
  
  const _listFlag = 'list';
  const _summaryFlag = 'summary';
  const _summaryAll = 'all';
  const _summaryFail = 'fail';
  const _summaryPass = 'pass';
  
  Task createUnitTestTask(Action1<unittest.Configuration> unitTestAction) {
    return new Task.async((TaskContext ctx) {
  
      final summaryFlag = ctx.arguments[_summaryFlag];
  
      final passSummary =
          (summaryFlag == _summaryAll || summaryFlag == _summaryPass);
  
      final failSummary =
          (summaryFlag == _summaryAll || summaryFlag == _summaryFail);
  
      final config = new _HopTestConfiguration(ctx, failSummary, passSummary);
      unitTestAction(config);
  
      if(!ctx.arguments.rest.isEmpty) {
  