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

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

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