| Index: tools/testing/dart/test_progress.dart
 | 
| diff --git a/tools/testing/dart/test_progress.dart b/tools/testing/dart/test_progress.dart
 | 
| index 0fbb7678b0d0367531ab67c44fc5b05a5456f0be..3fdfbf3fa734a438dbf45bd27b96aa0c6ec35b84 100644
 | 
| --- a/tools/testing/dart/test_progress.dart
 | 
| +++ b/tools/testing/dart/test_progress.dart
 | 
| @@ -61,19 +61,19 @@ class ColorFormatter extends Formatter {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  List<String> _buildFailureOutput(TestCase test,
 | 
| -                                 [Formatter formatter = const Formatter()]) {
 | 
| -
 | 
| +    [Formatter formatter = const Formatter()]) {
 | 
|    List<String> getLinesWithoutCarriageReturn(List<int> output) {
 | 
| -    return decodeUtf8(output).replaceAll('\r\n', '\n')
 | 
| -        .replaceAll('\r', '\n').split('\n');
 | 
| +    return decodeUtf8(output)
 | 
| +        .replaceAll('\r\n', '\n')
 | 
| +        .replaceAll('\r', '\n')
 | 
| +        .split('\n');
 | 
|    }
 | 
|  
 | 
|    List<String> output = new List<String>();
 | 
|    output.add('');
 | 
|    output.add(formatter.failed('FAILED: ${test.configurationString}'
 | 
| -                              ' ${test.displayName}'));
 | 
| +      ' ${test.displayName}'));
 | 
|    StringBuffer expected = new StringBuffer();
 | 
|    expected.write('Expected: ');
 | 
|    for (var expectation in test.expectedOutcomes) {
 | 
| @@ -82,8 +82,8 @@ List<String> _buildFailureOutput(TestCase test,
 | 
|    output.add(expected.toString());
 | 
|    output.add('Actual: ${test.result}');
 | 
|    if (!test.lastCommandOutput.hasTimedOut) {
 | 
| -    if (test.commandOutputs.length != test.commands.length
 | 
| -        && !test.expectCompileError) {
 | 
| +    if (test.commandOutputs.length != test.commands.length &&
 | 
| +        !test.expectCompileError) {
 | 
|        output.add('Unexpected compile-time error.');
 | 
|      } else {
 | 
|        if (test.expectCompileError) {
 | 
| @@ -123,8 +123,7 @@ List<String> _buildFailureOutput(TestCase test,
 | 
|    }
 | 
|    if (test is BrowserTestCase) {
 | 
|      // Additional command for rerunning the steps locally after the fact.
 | 
| -    var command =
 | 
| -      test.configuration["_servers_"].httpServerCommandline();
 | 
| +    var command = test.configuration["_servers_"].httpServerCommandline();
 | 
|      output.add('');
 | 
|      output.add('To retest, run:  $command');
 | 
|    }
 | 
| @@ -152,20 +151,19 @@ List<String> _buildFailureOutput(TestCase test,
 | 
|  }
 | 
|  
 | 
|  String _buildSummaryEnd(int failedTests) {
 | 
| -    if (failedTests == 0) {
 | 
| -      return '\n===\n=== All tests succeeded\n===\n';
 | 
| -    } else {
 | 
| -      var pluralSuffix = failedTests != 1 ? 's' : '';
 | 
| -      return '\n===\n=== ${failedTests} test$pluralSuffix failed\n===\n';
 | 
| -    }
 | 
| +  if (failedTests == 0) {
 | 
| +    return '\n===\n=== All tests succeeded\n===\n';
 | 
| +  } else {
 | 
| +    var pluralSuffix = failedTests != 1 ? 's' : '';
 | 
| +    return '\n===\n=== ${failedTests} test$pluralSuffix failed\n===\n';
 | 
| +  }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class EventListener {
 | 
| -  void testAdded() { }
 | 
| -  void done(TestCase test) { }
 | 
| -  void allTestsKnown() { }
 | 
| -  void allDone() { }
 | 
| +  void testAdded() {}
 | 
| +  void done(TestCase test) {}
 | 
| +  void allTestsKnown() {}
 | 
| +  void allDone() {}
 | 
|  }
 | 
|  
 | 
|  class ExitCodeSetter extends EventListener {
 | 
| @@ -226,10 +224,22 @@ class TestOutcomeLogWriter extends EventListener {
 | 
|     *  },
 | 
|     */
 | 
|  
 | 
| -  static final INTERESTED_CONFIGURATION_PARAMETERS =
 | 
| -      ['mode', 'arch', 'compiler', 'runtime', 'checked', 'host_checked',
 | 
| -       'minified', 'csp', 'system', 'vm_options', 'use_sdk',
 | 
| -       'use_repository_packages', 'use_public_packages', 'builder_tag'];
 | 
| +  static final INTERESTED_CONFIGURATION_PARAMETERS = [
 | 
| +    'mode',
 | 
| +    'arch',
 | 
| +    'compiler',
 | 
| +    'runtime',
 | 
| +    'checked',
 | 
| +    'host_checked',
 | 
| +    'minified',
 | 
| +    'csp',
 | 
| +    'system',
 | 
| +    'vm_options',
 | 
| +    'use_sdk',
 | 
| +    'use_repository_packages',
 | 
| +    'use_public_packages',
 | 
| +    'builder_tag'
 | 
| +  ];
 | 
|  
 | 
|    IOSink _sink;
 | 
|  
 | 
| @@ -248,22 +258,20 @@ class TestOutcomeLogWriter extends EventListener {
 | 
|      for (var command in test.commands) {
 | 
|        var output = test.commandOutputs[command];
 | 
|        if (output != null) {
 | 
| -        double duration = output.time.inMicroseconds/1000.0;
 | 
| +        double duration = output.time.inMicroseconds / 1000.0;
 | 
|          totalDuration += duration;
 | 
| -        commandResults.add({
 | 
| -          'name': command.displayName,
 | 
| -          'duration': duration,
 | 
| -        });
 | 
| +        commandResults
 | 
| +            .add({'name': command.displayName, 'duration': duration,});
 | 
|        }
 | 
|      }
 | 
|      _writeTestOutcomeRecord({
 | 
| -      'name' : name,
 | 
| -      'configuration' : configuration,
 | 
| -      'test_result' : {
 | 
| -        'outcome' : outcome,
 | 
| -        'expected_outcomes' : expectations,
 | 
| -        'duration' : totalDuration,
 | 
| -        'command_results' : commandResults,
 | 
| +      'name': name,
 | 
| +      'configuration': configuration,
 | 
| +      'test_result': {
 | 
| +        'outcome': outcome,
 | 
| +        'expected_outcomes': expectations,
 | 
| +        'duration': totalDuration,
 | 
| +        'command_results': commandResults,
 | 
|        },
 | 
|      });
 | 
|    }
 | 
| @@ -281,7 +289,6 @@ class TestOutcomeLogWriter extends EventListener {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class UnexpectedCrashDumpArchiver extends EventListener {
 | 
|    void done(TestCase test) {
 | 
|      if (test.unexpectedOutput && test.result == Expectation.CRASH) {
 | 
| @@ -294,19 +301,20 @@ class UnexpectedCrashDumpArchiver extends EventListener {
 | 
|          var binBaseName = new Path(binName).filename;
 | 
|          if (binFile.existsSync()) {
 | 
|            var tmpPath = new Path(Directory.systemTemp.path);
 | 
| -          var dir = new Path(TestUtils.mkdirRecursive(tmpPath,
 | 
| -              new Path('coredump_${test.lastCommandOutput.pid}')).path);
 | 
| +          var dir = new Path(TestUtils
 | 
| +              .mkdirRecursive(
 | 
| +                  tmpPath, new Path('coredump_${test.lastCommandOutput.pid}'))
 | 
| +              .path);
 | 
|            TestUtils.copyFile(new Path(name), dir.append(name));
 | 
|            TestUtils.copyFile(new Path(binName), dir.append(binBaseName));
 | 
|            print("\nCopied core dump and binary for unexpected crash to: "
 | 
| -                "$dir");
 | 
| +              "$dir");
 | 
|          }
 | 
|        }
 | 
|      }
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class SummaryPrinter extends EventListener {
 | 
|    final bool jsonOnly;
 | 
|  
 | 
| @@ -323,7 +331,6 @@ class SummaryPrinter extends EventListener {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class TimingPrinter extends EventListener {
 | 
|    final _command2testCases = new Map<Command, List<TestCase>>();
 | 
|    final _commandOutputs = new Set<CommandOutput>();
 | 
| @@ -357,8 +364,8 @@ class TimingPrinter extends EventListener {
 | 
|        }).join(', ');
 | 
|  
 | 
|        print('${commandOutput.time} - '
 | 
| -            '${command.displayName} - '
 | 
| -            '$testCasesDescription');
 | 
| +          '${command.displayName} - '
 | 
| +          '$testCasesDescription');
 | 
|      }
 | 
|    }
 | 
|  }
 | 
| @@ -377,7 +384,6 @@ class StatusFileUpdatePrinter extends EventListener {
 | 
|      _printFailureSummary();
 | 
|    }
 | 
|  
 | 
| -
 | 
|    void _printFailureOutput(TestCase test) {
 | 
|      String status = '${test.displayName}: ${test.result}';
 | 
|      List<String> configs =
 | 
| @@ -405,12 +411,11 @@ class StatusFileUpdatePrinter extends EventListener {
 | 
|              runtimeToConfiguration.putIfAbsent(runtime, () => <String>[]);
 | 
|          runtimeConfigs.add(config);
 | 
|        }
 | 
| -      runtimeToConfiguration.forEach((String runtime,
 | 
| -                                      List<String> runtimeConfigs) {
 | 
| +      runtimeToConfiguration
 | 
| +          .forEach((String runtime, List<String> runtimeConfigs) {
 | 
|          runtimeConfigs.sort((a, b) => a.compareTo(b));
 | 
| -        List<String> statuses =
 | 
| -            groupedStatuses.putIfAbsent('$runtime: $runtimeConfigs',
 | 
| -                                        () => <String>[]);
 | 
| +        List<String> statuses = groupedStatuses.putIfAbsent(
 | 
| +            '$runtime: $runtimeConfigs', () => <String>[]);
 | 
|          statuses.add(status);
 | 
|        });
 | 
|      });
 | 
| @@ -432,15 +437,14 @@ class SkippedCompilationsPrinter extends EventListener {
 | 
|  
 | 
|    void done(TestCase test) {
 | 
|      for (var commandOutput in test.commandOutputs.values) {
 | 
| -      if (commandOutput.compilationSkipped)
 | 
| -        _skippedCompilations++;
 | 
| +      if (commandOutput.compilationSkipped) _skippedCompilations++;
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    void allDone() {
 | 
|      if (_skippedCompilations > 0) {
 | 
|        print('\n$_skippedCompilations compilations were skipped because '
 | 
| -            'the previous output was already up to date\n');
 | 
| +          'the previous output was already up to date\n');
 | 
|      }
 | 
|    }
 | 
|  }
 | 
| @@ -460,24 +464,23 @@ class LeftOverTempDirPrinter extends EventListener {
 | 
|  
 | 
|    static Stream<Directory> getLeftOverTemporaryDirectories() {
 | 
|      var regExp = _getTemporaryDirectoryRegexp();
 | 
| -    return Directory.systemTemp.list().where(
 | 
| -        (FileSystemEntity fse) {
 | 
| -          if (fse is Directory) {
 | 
| -            if (regExp.hasMatch(new Path(fse.path).filename)) {
 | 
| -              return true;
 | 
| -            }
 | 
| -          }
 | 
| -          return false;
 | 
| -        });
 | 
| +    return Directory.systemTemp.list().where((FileSystemEntity fse) {
 | 
| +      if (fse is Directory) {
 | 
| +        if (regExp.hasMatch(new Path(fse.path).filename)) {
 | 
| +          return true;
 | 
| +        }
 | 
| +      }
 | 
| +      return false;
 | 
| +    });
 | 
|    }
 | 
|  
 | 
|    void allDone() {
 | 
|      getLeftOverTemporaryDirectories().length.then((int count) {
 | 
|        if (count > MIN_NUMBER_OF_TEMP_DIRS) {
 | 
|          DebugLogger.warning("There are ${count} directories "
 | 
| -                            "in the system tempdir "
 | 
| -                            "('${Directory.systemTemp.path}')! "
 | 
| -                            "Maybe left over directories?\n");
 | 
| +            "in the system tempdir "
 | 
| +            "('${Directory.systemTemp.path}')! "
 | 
| +            "Maybe left over directories?\n");
 | 
|        }
 | 
|      }).catchError((error) {
 | 
|        DebugLogger.warning("Could not list temp directories, got: $error");
 | 
| @@ -495,15 +498,13 @@ class LineProgressIndicator extends EventListener {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class TestFailurePrinter extends EventListener {
 | 
|    bool _printSummary;
 | 
|    var _formatter;
 | 
|    var _failureSummary = <String>[];
 | 
| -  var _failedTests= 0;
 | 
| +  var _failedTests = 0;
 | 
|  
 | 
| -  TestFailurePrinter(this._printSummary,
 | 
| -                     [this._formatter = const Formatter()]);
 | 
| +  TestFailurePrinter(this._printSummary, [this._formatter = const Formatter()]);
 | 
|  
 | 
|    void done(TestCase test) {
 | 
|      if (test.unexpectedOutput) {
 | 
| @@ -538,8 +539,9 @@ class TestFailurePrinter extends EventListener {
 | 
|  class ProgressIndicator extends EventListener {
 | 
|    ProgressIndicator(this._startTime);
 | 
|  
 | 
| -
 | 
| -  void testAdded() { _foundTests++; }
 | 
| +  void testAdded() {
 | 
| +    _foundTests++;
 | 
| +  }
 | 
|  
 | 
|    void done(TestCase test) {
 | 
|      if (test.unexpectedOutput) {
 | 
| @@ -566,8 +568,7 @@ class ProgressIndicator extends EventListener {
 | 
|  }
 | 
|  
 | 
|  abstract class CompactIndicator extends ProgressIndicator {
 | 
| -  CompactIndicator(DateTime startTime)
 | 
| -      : super(startTime);
 | 
| +  CompactIndicator(DateTime startTime) : super(startTime);
 | 
|  
 | 
|    void allDone() {
 | 
|      if (_failedTests > 0) {
 | 
| @@ -582,7 +583,6 @@ abstract class CompactIndicator extends ProgressIndicator {
 | 
|    void _printProgress();
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class CompactProgressIndicator extends CompactIndicator {
 | 
|    Formatter _formatter;
 | 
|  
 | 
| @@ -595,18 +595,15 @@ class CompactProgressIndicator extends CompactIndicator {
 | 
|      var passedPadded = _pad(_passedTests.toString(), 5);
 | 
|      var failedPadded = _pad(_failedTests.toString(), 5);
 | 
|      Duration d = (new DateTime.now()).difference(_startTime);
 | 
| -    var progressLine =
 | 
| -        '\r[${_timeString(d)} | $progressPadded% | '
 | 
| +    var progressLine = '\r[${_timeString(d)} | $progressPadded% | '
 | 
|          '+${_formatter.passed(passedPadded)} | '
 | 
|          '-${_formatter.failed(failedPadded)}]';
 | 
|      stdout.write(progressLine);
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class VerboseProgressIndicator extends ProgressIndicator {
 | 
| -  VerboseProgressIndicator(DateTime startTime)
 | 
| -      : super(startTime);
 | 
| +  VerboseProgressIndicator(DateTime startTime) : super(startTime);
 | 
|  
 | 
|    void _printDoneProgress(TestCase test) {
 | 
|      var status = 'pass';
 | 
| @@ -617,7 +614,6 @@ class VerboseProgressIndicator extends ProgressIndicator {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  class BuildbotProgressIndicator extends ProgressIndicator {
 | 
|    static String stepName;
 | 
|    var _failureSummary = <String>[];
 | 
| @@ -657,10 +653,8 @@ class BuildbotProgressIndicator extends ProgressIndicator {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
| -EventListener progressIndicatorFromName(String name,
 | 
| -                                        DateTime startTime,
 | 
| -                                        Formatter formatter) {
 | 
| +EventListener progressIndicatorFromName(
 | 
| +    String name, DateTime startTime, Formatter formatter) {
 | 
|    switch (name) {
 | 
|      case 'compact':
 | 
|        return new CompactProgressIndicator(startTime, formatter);
 | 
| 
 |