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

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

Issue 8528025: Implement more progress modes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address review comments Created 9 years, 1 month 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
« no previous file with comments | « tools/testing/dart/test_options.dart ('k') | tools/testing/dart/test_runner.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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("test_runner.dart"); 7 #import("test_runner.dart");
8 8
9 class ProgressIndicator { 9 class ProgressIndicator {
10 ProgressIndicator() : _startTime = new Date.now(); 10 ProgressIndicator() : _startTime = new Date.now();
11 11
12 factory ProgressIndicator.fromName(String name) {
13 switch (name) {
14 case 'compact':
15 return new CompactProgressIndicator();
16 case 'line':
17 return new LineProgressIndicator();
18 case 'verbose':
19 return new VerboseProgressIndicator();
20 case 'status':
21 return new StatusProgressIndicator();
22 case 'buildbot':
23 return new BuildbotProgressIndicator();
24 default:
25 assert(false);
Bill Hesse 2011/11/14 16:17:17 I think we want to throw here, not just throw in c
26 break;
27 }
28 }
29
12 void testAdded() => _foundTests++; 30 void testAdded() => _foundTests++;
13 31
14 void start(TestCase test) { 32 void start(TestCase test) {
15 _printProgress(); 33 _printStartProgress(test);
16 } 34 }
17 35
18 void done(TestCase test) { 36 void done(TestCase test) {
19 if (test.output.unexpectedOutput) { 37 if (test.output.unexpectedOutput) {
20 _failedTests++; 38 _failedTests++;
21 _printFailureOutput(test); 39 _printFailureOutput(test);
22 } else { 40 } else {
23 _passedTests++; 41 _passedTests++;
24 } 42 }
25 _printProgress(); 43 _printDoneProgress(test);
26 } 44 }
27 45
28 abstract _printProgress(); 46 abstract allDone();
47 abstract _printStartProgress();
48 abstract _printDoneProgress();
29 49
30 String _pad(String s, int length) { 50 String _pad(String s, int length) {
31 StringBuffer buffer = new StringBuffer(); 51 StringBuffer buffer = new StringBuffer();
32 for (int i = s.length; i < length; i++) { 52 for (int i = s.length; i < length; i++) {
33 buffer.add(' '); 53 buffer.add(' ');
34 } 54 }
35 buffer.add(s); 55 buffer.add(s);
36 return buffer.toString(); 56 return buffer.toString();
37 } 57 }
38 58
(...skipping 27 matching lines...) Expand all
66 print('\nstdout:'); 86 print('\nstdout:');
67 test.output.stdout.forEach((s) => print(s)); 87 test.output.stdout.forEach((s) => print(s));
68 } 88 }
69 if (!test.output.stderr.isEmpty()) { 89 if (!test.output.stderr.isEmpty()) {
70 print('\nstderr:'); 90 print('\nstderr:');
71 test.output.stderr.forEach((s) => print(s)); 91 test.output.stderr.forEach((s) => print(s));
72 } 92 }
73 print('\nCommand line: ${test.commandLine}'); 93 print('\nCommand line: ${test.commandLine}');
74 } 94 }
75 95
96 void _printStatus() {
97 if (_failedTests == 0) {
98 print('\n===');
99 print('=== All tests succeeded');
100 print('===\n');
101 } else {
102 var pluralSuffix = _failedTests != 1 ? 's' : '';
103 print('\n===');
104 print('=== ${_failedTests} test$pluralSuffix failed');
105 print('===\n');
106 }
107 }
108
76 int _completedTests() => _passedTests + _failedTests; 109 int _completedTests() => _passedTests + _failedTests;
77 110
78 int _foundTests = 0; 111 int _foundTests = 0;
79 int _passedTests = 0; 112 int _passedTests = 0;
80 int _failedTests = 0; 113 int _failedTests = 0;
81 Date _startTime; 114 Date _startTime;
82 } 115 }
83 116
84 117
85 class CompactProgressIndicator extends ProgressIndicator { 118 class CompactProgressIndicator extends ProgressIndicator {
119 void allDone() {
120 }
121
86 void _printProgress() { 122 void _printProgress() {
87 var percent = ((_completedTests() / _foundTests) * 100).floor().toString(); 123 var percent = ((_completedTests() / _foundTests) * 100).floor().toString();
88 var percentPadded = _pad(percent, 5); 124 var percentPadded = _pad(percent, 5);
89 var passedPadded = _pad(_passedTests.toString(), 5); 125 var passedPadded = _pad(_passedTests.toString(), 5);
90 var failedPadded = _pad(_failedTests.toString(), 5); 126 var failedPadded = _pad(_failedTests.toString(), 5);
91 var progressLine = 127 var progressLine =
92 '\r[${_timeString()} | $percentPadded% | ' + 128 '\r[${_timeString()} | $percentPadded% | ' +
93 '+$passedPadded | -$failedPadded]'; 129 '+$passedPadded | -$failedPadded]';
94 stdout.write(progressLine.charCodes()); 130 stdout.write(progressLine.charCodes());
95 } 131 }
132
133 void _printStartProgress(TestCase test) => _printProgress();
134 void _printDoneProgress(TestCase test) => _printProgress();
96 } 135 }
97 136
137
138 class LineProgressIndicator extends ProgressIndicator {
139 void allDone() {
140 _printStatus();
141 }
142
143 void _printStartProgress(TestCase test) {
144 }
145
146 void _printDoneProgress(TestCase test) {
147 var status = 'pass';
148 if (test.output.unexpectedOutput) {
149 status = 'fail';
150 }
151 print('Done ${test.displayName}: $status');
152 }
153 }
154
155
156 class VerboseProgressIndicator extends ProgressIndicator {
157 void allDone() {
158 _printStatus();
159 }
160
161 void _printStartProgress(TestCase test) {
162 print('Starting ${test.displayName}...');
163 }
164
165 void _printDoneProgress(TestCase test) {
166 var status = 'pass';
167 if (test.output.unexpectedOutput) {
168 status = 'fail';
169 }
170 print('Done ${test.displayName}: $status');
171 }
172 }
173
174
175 class StatusProgressIndicator extends ProgressIndicator {
176 void allDone() {
177 _printStatus();
178 }
179
180 void _printStartProgress(TestCase test) {
181 }
182
183 void _printDoneProgress(TestCase test) {
184 }
185 }
186
187
188 class BuildbotProgressIndicator extends ProgressIndicator {
189 void allDone() {
190 _printStatus();
191 }
192
193 void _printStartProgress(TestCase test) {
194 }
195
196 void _printDoneProgress(TestCase test) {
197 var status = 'pass';
198 if (test.output.unexpectedOutput) {
199 status = 'fail';
200 }
201 var percent = ((_completedTests() / _foundTests) * 100).toInt().toString();
202 print('Done ${test.displayName}: $status');
203 print('@@@STEP_CLEAR@@@');
204 print('@@@STEP_TEXT@ $percent% +$_passedTests -$_failedTests @@@');
205 }
206 }
OLDNEW
« no previous file with comments | « tools/testing/dart/test_options.dart ('k') | tools/testing/dart/test_runner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698