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

Side by Side Diff: test/runner/engine_test.dart

Issue 1390883002: Make Suite contain a single Group. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 2 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
« no previous file with comments | « test/runner/browser/loader_test.dart ('k') | test/runner/isolate_listener_test.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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 import 'package:test/src/backend/declarer.dart'; 5 import 'package:test/src/backend/group.dart';
6 import 'package:test/src/backend/state.dart'; 6 import 'package:test/src/backend/state.dart';
7 import 'package:test/src/backend/test.dart';
7 import 'package:test/src/runner/engine.dart'; 8 import 'package:test/src/runner/engine.dart';
8 import 'package:test/src/runner/runner_suite.dart'; 9 import 'package:test/src/runner/runner_suite.dart';
9 import 'package:test/src/runner/vm/environment.dart'; 10 import 'package:test/src/runner/vm/environment.dart';
10 import 'package:test/test.dart'; 11 import 'package:test/test.dart';
11 12
12 import '../utils.dart'; 13 import '../utils.dart';
13 14
14 void main() { 15 void main() {
15 test("runs each test in each suite in order", () async { 16 test("runs each test in each suite in order", () async {
16 var testsRun = 0; 17 var testsRun = 0;
17 var tests = declare(() { 18 var tests = declare(() {
18 for (var i = 0; i < 4; i++) { 19 for (var i = 0; i < 4; i++) {
19 test("test ${i + 1}", expectAsync(() { 20 test("test ${i + 1}", expectAsync(() {
20 expect(testsRun, equals(i)); 21 expect(testsRun, equals(i));
21 testsRun++; 22 testsRun++;
22 }, max: 1)); 23 }, max: 1));
23 } 24 }
24 }); 25 });
25 26
26 var engine = new Engine.withSuites([ 27 var engine = new Engine.withSuites([
27 new RunnerSuite(const VMEnvironment(), tests.take(2)), 28 new RunnerSuite(const VMEnvironment(), new Group.root(tests.take(2))),
28 new RunnerSuite(const VMEnvironment(), tests.skip(2)) 29 new RunnerSuite(const VMEnvironment(), new Group.root(tests.skip(2)))
29 ]); 30 ]);
30 31
31 await engine.run(); 32 await engine.run();
32 expect(testsRun, equals(4)); 33 expect(testsRun, equals(4));
33 }); 34 });
34 35
35 test("runs tests in a suite added after run() was called", () { 36 test("runs tests in a suite added after run() was called", () {
36 var testsRun = 0; 37 var testsRun = 0;
37 var tests = declare(() { 38 var tests = declare(() {
38 for (var i = 0; i < 4; i++) { 39 for (var i = 0; i < 4; i++) {
39 test("test ${i + 1}", expectAsync(() { 40 test("test ${i + 1}", expectAsync(() {
40 expect(testsRun, equals(i)); 41 expect(testsRun, equals(i));
41 testsRun++; 42 testsRun++;
42 }, max: 1)); 43 }, max: 1));
43 } 44 }
44 }); 45 });
45 46
46 var engine = new Engine(); 47 var engine = new Engine();
47 expect(engine.run().then((_) { 48 expect(engine.run().then((_) {
48 expect(testsRun, equals(4)); 49 expect(testsRun, equals(4));
49 }), completes); 50 }), completes);
50 51
51 engine.suiteSink.add(new RunnerSuite(const VMEnvironment(), tests)); 52 engine.suiteSink.add(
53 new RunnerSuite(const VMEnvironment(), new Group.root(tests)));
52 engine.suiteSink.close(); 54 engine.suiteSink.close();
53 }); 55 });
54 56
55 test("emits each test before it starts running and after the previous test " 57 test("emits each test before it starts running and after the previous test "
56 "finished", () { 58 "finished", () {
57 var testsRun = 0; 59 var testsRun = 0;
58 var tests = declare(() { 60 var engine = withTests(declare(() {
59 for (var i = 0; i < 3; i++) { 61 for (var i = 0; i < 3; i++) {
60 test("test ${i + 1}", expectAsync(() => testsRun++, max: 1)); 62 test("test ${i + 1}", expectAsync(() => testsRun++, max: 1));
61 } 63 }
62 }); 64 }));
63
64 var engine = new Engine.withSuites([
65 new RunnerSuite(const VMEnvironment(), tests)
66 ]);
67 65
68 engine.onTestStarted.listen(expectAsync((liveTest) { 66 engine.onTestStarted.listen(expectAsync((liveTest) {
69 // [testsRun] should be one less than the test currently running. 67 // [testsRun] should be one less than the test currently running.
70 expect(liveTest.test.name, equals("test ${testsRun + 1}")); 68 expect(liveTest.test.name, equals("test ${testsRun + 1}"));
71 69
72 // [Engine.onTestStarted] is guaranteed to fire before the first 70 // [Engine.onTestStarted] is guaranteed to fire before the first
73 // [LiveTest.onStateChange]. 71 // [LiveTest.onStateChange].
74 expect(liveTest.onStateChange.first, 72 expect(liveTest.onStateChange.first,
75 completion(equals(const State(Status.running, Result.success)))); 73 completion(equals(const State(Status.running, Result.success))));
76 }, count: 3, max: 3)); 74 }, count: 3, max: 3));
77 75
78 return engine.run(); 76 return engine.run();
79 }); 77 });
80 78
81 test(".run() returns true if every test passes", () { 79 test(".run() returns true if every test passes", () {
82 var tests = declare(() { 80 var engine = withTests(declare(() {
83 for (var i = 0; i < 2; i++) { 81 for (var i = 0; i < 2; i++) {
84 test("test ${i + 1}", () {}); 82 test("test ${i + 1}", () {});
85 } 83 }
86 }); 84 }));
87 85
88 var engine = new Engine.withSuites([
89 new RunnerSuite(const VMEnvironment(), tests)
90 ]);
91 expect(engine.run(), completion(isTrue)); 86 expect(engine.run(), completion(isTrue));
92 }); 87 });
93 88
94 test(".run() returns false if any test fails", () { 89 test(".run() returns false if any test fails", () {
95 var tests = declare(() { 90 var engine = withTests(declare(() {
96 for (var i = 0; i < 2; i++) { 91 for (var i = 0; i < 2; i++) {
97 test("test ${i + 1}", () {}); 92 test("test ${i + 1}", () {});
98 } 93 }
99 test("failure", () => throw new TestFailure("oh no")); 94 test("failure", () => throw new TestFailure("oh no"));
100 }); 95 }));
101 96
102 var engine = new Engine.withSuites([
103 new RunnerSuite(const VMEnvironment(), tests)
104 ]);
105 expect(engine.run(), completion(isFalse)); 97 expect(engine.run(), completion(isFalse));
106 }); 98 });
107 99
108 test(".run() returns false if any test errors", () { 100 test(".run() returns false if any test errors", () {
109 var tests = declare(() { 101 var engine = withTests(declare(() {
110 for (var i = 0; i < 2; i++) { 102 for (var i = 0; i < 2; i++) {
111 test("test ${i + 1}", () {}); 103 test("test ${i + 1}", () {});
112 } 104 }
113 test("failure", () => throw "oh no"); 105 test("failure", () => throw "oh no");
114 }); 106 }));
115 107
116 var engine = new Engine.withSuites([
117 new RunnerSuite(const VMEnvironment(), tests)
118 ]);
119 expect(engine.run(), completion(isFalse)); 108 expect(engine.run(), completion(isFalse));
120 }); 109 });
121 110
122 test(".run() may not be called more than once", () { 111 test(".run() may not be called more than once", () {
123 var engine = new Engine.withSuites([]); 112 var engine = new Engine.withSuites([]);
124 expect(engine.run(), completes); 113 expect(engine.run(), completes);
125 expect(engine.run, throwsStateError); 114 expect(engine.run, throwsStateError);
126 }); 115 });
127 116
128 group("for a skipped test", () { 117 group("for a skipped test", () {
129 test("doesn't run the test's body", () async { 118 test("doesn't run the test's body", () async {
130 var bodyRun = false; 119 var bodyRun = false;
131 var tests = declare(() { 120 var engine = withTests(declare(() {
132 test("test", () => bodyRun = true, skip: true); 121 test("test", () => bodyRun = true, skip: true);
133 }); 122 }));
134 123
135 var engine = new Engine.withSuites([
136 new RunnerSuite(const VMEnvironment(), tests)
137 ]);
138 await engine.run(); 124 await engine.run();
139 expect(bodyRun, isFalse); 125 expect(bodyRun, isFalse);
140 }); 126 });
141 127
142 test("exposes a LiveTest that emits the correct states", () { 128 test("exposes a LiveTest that emits the correct states", () {
143 var tests = declare(() { 129 var tests = declare(() {
144 test("test", () {}, skip: true); 130 test("test", () {}, skip: true);
145 }); 131 });
146 132
147 var engine = new Engine.withSuites([ 133 var engine = withTests(tests);
148 new RunnerSuite(const VMEnvironment(), tests)
149 ]);
150 134
151 engine.onTestStarted.listen(expectAsync((liveTest) { 135 engine.onTestStarted.listen(expectAsync((liveTest) {
152 expect(liveTest, same(engine.liveTests.single)); 136 expect(liveTest, same(engine.liveTests.single));
153 expect(liveTest.test.name, equals(tests.single.name)); 137 expect(liveTest.test.name, equals(tests.single.name));
154 138
155 var first = true; 139 var first = true;
156 liveTest.onStateChange.listen(expectAsync((state) { 140 liveTest.onStateChange.listen(expectAsync((state) {
157 expect(state, equals(first 141 expect(state, equals(first
158 ? const State(Status.running, Result.success) 142 ? const State(Status.running, Result.success)
159 : const State(Status.complete, Result.success))); 143 : const State(Status.complete, Result.success)));
160 first = false; 144 first = false;
161 }, count: 2)); 145 }, count: 2));
162 146
163 expect(liveTest.onComplete, completes); 147 expect(liveTest.onComplete, completes);
164 })); 148 }));
165 149
166 return engine.run(); 150 return engine.run();
167 }); 151 });
168 }); 152 });
169 } 153 }
154
155 /// Returns an engine that will run [tests].
156 Engine withTests(List<Test> tests) {
157 return new Engine.withSuites([
158 new RunnerSuite(const VMEnvironment(), new Group.root(tests))
159 ]);
160 }
OLDNEW
« no previous file with comments | « test/runner/browser/loader_test.dart ('k') | test/runner/isolate_listener_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698