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

Side by Side Diff: pkg/unittest/test/unittest_test_utils.dart

Issue 319983005: pkg/unittest: test cleanup (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: rebase Created 6 years, 6 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 part of unittestTest;
6
7 Future _defer(void fn()) {
8 return new Future.sync(fn);
9 }
10
11 String buildStatusString(int passed, int failed, int errors,
12 var results,
13 {int count: 0,
14 String setup: '', String teardown: '',
15 String uncaughtError: null,
16 String message: ''}) {
17 var totalTests = 0;
18 var testDetails = new StringBuffer();
19 if (results == null) {
20 // no op
21 assert(message == '');
22 } else if (results is String) {
23 totalTests = passed + failed + errors;
24 testDetails.write(':$results:$message');
25 } else {
26 totalTests = results.length;
27 for (var i = 0; i < results.length; i++) {
28 testDetails.write(':${results[i].description}:'
29 '${collapseWhitespace(results[i].message)}');
30 }
31 }
32 return '$passed:$failed:$errors:$totalTests:$count:'
33 '$setup:$teardown:$uncaughtError$testDetails';
34 }
35
36 class TestConfiguration extends Configuration {
37
38 // Some test state that is captured.
39 int count = 0; // A count of callbacks.
40 String setup = ''; // The name of the test group setup function, if any.
41 String teardown = ''; // The name of the group teardown function, if any.
42
43 // The port to communicate with the parent isolate
44 final SendPort _port;
45 String _result;
46
47 TestConfiguration(this._port): super.blank();
48
49 void onSummary(int passed, int failed, int errors, List<TestCase> results,
50 String uncaughtError) {
51 _result = buildStatusString(passed, failed, errors, results,
52 count: count, setup: setup, teardown: teardown,
53 uncaughtError: uncaughtError);
54 }
55
56 void onDone(bool success) {
57 _port.send(_result);
58 }
59 }
60
61 Function makeDelayedSetup(index, s) => () {
62 return new Future.delayed(new Duration(milliseconds: 1), () {
63 s.write('l$index U ');
64 });
65 };
66
67 Function makeDelayedTeardown(index, s) => () {
68 return new Future.delayed(new Duration(milliseconds: 1), () {
69 s.write('l$index D ');
70 });
71 };
72
73 Function makeImmediateSetup(index, s) => () {
74 s.write('l$index U ');
75 };
76
77 Function makeImmediateTeardown(index, s) => () {
78 s.write('l$index D ');
79 };
80
81 void runTestInIsolate(sendport) {
82 var testConfig = new TestConfiguration(sendport);
83 unittestConfiguration = testConfig;
84 testFunction(testConfig);
85 }
86
87 void main() {
88 var replyPort = new ReceivePort();
89 Isolate.spawn(runTestInIsolate, replyPort.sendPort);
90 replyPort.first.then((String msg) {
91 expect(msg.trim(), expected);
92 });
93 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698