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

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

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

Powered by Google App Engine
This is Rietveld 408576698