Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: tools/testing/dart/test_progress.dart

Issue 145273024: Add support for copying coredumps to /tmp (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test_progress; 5 library test_progress;
6 6
7 import "dart:async"; 7 import "dart:async";
8 import "dart:io"; 8 import "dart:io";
9 import "dart:io" as io; 9 import "dart:io" as io;
10 import "dart:convert" show JSON; 10 import "dart:convert" show JSON;
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 269
270 void _writeTestOutcomeRecord(Map record) { 270 void _writeTestOutcomeRecord(Map record) {
271 if (_sink == null) { 271 if (_sink == null) {
272 _sink = new File(TestUtils.testOutcomeFileName()) 272 _sink = new File(TestUtils.testOutcomeFileName())
273 .openWrite(mode: FileMode.APPEND); 273 .openWrite(mode: FileMode.APPEND);
274 } 274 }
275 _sink.write("${JSON.encode(record)}\n"); 275 _sink.write("${JSON.encode(record)}\n");
276 } 276 }
277 } 277 }
278 278
279
280 class UnexpectedCrashDumpArchiver extends EventListener {
281 void done(TestCase test) {
282 if (test.unexpectedOutput && test.result == Expectation.CRASH) {
283 var name = "core.dart.${test.lastCommandOutput.pid}";
284 var file = new File(name);
285 if (file.existsSync()) {
286 // Find the binary - we assume this is the first part of the command
287 var binName = test.lastCommandExecuted.toString().split(' ').first;
288 var binFile = new File(binName);
289 var binBaseName = new Path(binName).filename;
290 if (file.existsSync()) {
Bill Hesse 2014/01/29 07:01:52 I think this is always true, since it was true abo
ricow1 2014/01/29 09:41:38 yes, thank you
291 var dir = new Path(TestUtils.mkdirRecursive(new Path('/tmp'),
Bill Hesse 2014/01/29 07:01:52 We don't want to use Directory.systemTemp for this
ricow1 2014/01/29 09:41:38 Done.
292 new Path('coredump_${test.lastCommandOutput.pid}')).path);
293 TestUtils.copyFile(new Path(name), dir.append(name));
294 TestUtils.copyFile(new Path(binName), dir.append(binBaseName));
Bill Hesse 2014/01/29 07:01:52 I hate to see all these new uses of Path go in, bu
ricow1 2014/01/29 09:41:38 Yes I thought about that, but our copy functions t
295 print("\nCopied core dump and binary for unexpected crash to: "
296 "$dir");
297 }
298 }
299 }
300 }
301 }
302
303
279 class SummaryPrinter extends EventListener { 304 class SummaryPrinter extends EventListener {
280 void allTestsKnown() { 305 void allTestsKnown() {
281 if (SummaryReport.total > 0) { 306 if (SummaryReport.total > 0) {
282 SummaryReport.printReport(); 307 SummaryReport.printReport();
283 } 308 }
284 } 309 }
285 } 310 }
286 311
Bill Hesse 2014/01/29 07:01:52 Add a line here?
ricow1 2014/01/29 09:41:38 Done.
287 class TimingPrinter extends EventListener { 312 class TimingPrinter extends EventListener {
288 final _command2testCases = new Map<Command, List<TestCase>>(); 313 final _command2testCases = new Map<Command, List<TestCase>>();
289 final _commandOutputs = new Set<CommandOutput>(); 314 final _commandOutputs = new Set<CommandOutput>();
290 DateTime _startTime; 315 DateTime _startTime;
291 316
292 TimingPrinter(this._startTime); 317 TimingPrinter(this._startTime);
293 318
294 void done(TestCase testCase) { 319 void done(TestCase testCase) {
295 for (var commandOutput in testCase.commandOutputs.values) { 320 for (var commandOutput in testCase.commandOutputs.values) {
296 var command = commandOutput.command; 321 var command = commandOutput.command;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 class LineProgressIndicator extends EventListener { 474 class LineProgressIndicator extends EventListener {
450 void done(TestCase test) { 475 void done(TestCase test) {
451 var status = 'pass'; 476 var status = 'pass';
452 if (test.unexpectedOutput) { 477 if (test.unexpectedOutput) {
453 status = 'fail'; 478 status = 'fail';
454 } 479 }
455 print('Done ${test.configurationString} ${test.displayName}: $status'); 480 print('Done ${test.configurationString} ${test.displayName}: $status');
456 } 481 }
457 } 482 }
458 483
484
459 class TestFailurePrinter extends EventListener { 485 class TestFailurePrinter extends EventListener {
460 bool _printSummary; 486 bool _printSummary;
461 var _formatter; 487 var _formatter;
462 var _failureSummary = <String>[]; 488 var _failureSummary = <String>[];
463 var _failedTests= 0; 489 var _failedTests= 0;
464 490
465 TestFailurePrinter(this._printSummary, 491 TestFailurePrinter(this._printSummary,
466 [this._formatter = const Formatter()]); 492 [this._formatter = const Formatter()]);
467 493
468 void done(TestCase test) { 494 void done(TestCase test) {
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 return new VerboseProgressIndicator(startTime); 656 return new VerboseProgressIndicator(startTime);
631 case 'status': 657 case 'status':
632 return new ProgressIndicator(startTime); 658 return new ProgressIndicator(startTime);
633 case 'buildbot': 659 case 'buildbot':
634 return new BuildbotProgressIndicator(startTime); 660 return new BuildbotProgressIndicator(startTime);
635 default: 661 default:
636 assert(false); 662 assert(false);
637 break; 663 break;
638 } 664 }
639 } 665 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698