OLD | NEW |
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 @TestOn("vm") | 5 @TestOn("vm") |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'package:path/path.dart' as p; | 9 import 'package:scheduled_test/descriptor.dart' as d; |
| 10 import 'package:scheduled_test/scheduled_stream.dart'; |
| 11 import 'package:scheduled_test/scheduled_test.dart'; |
10 import 'package:test/src/util/io.dart'; | 12 import 'package:test/src/util/io.dart'; |
11 import 'package:test/test.dart'; | |
12 | 13 |
13 import '../io.dart'; | 14 import '../io.dart'; |
14 | 15 |
15 String _sandbox; | |
16 | |
17 final _otherOS = Platform.isWindows ? "mac-os" : "windows"; | 16 final _otherOS = Platform.isWindows ? "mac-os" : "windows"; |
18 | 17 |
19 void main() { | 18 void main() { |
20 setUp(() { | 19 useSandbox(); |
21 _sandbox = createTempDir(); | |
22 }); | |
23 | |
24 tearDown(() { | |
25 new Directory(_sandbox).deleteSync(recursive: true); | |
26 }); | |
27 | 20 |
28 group("for suite", () { | 21 group("for suite", () { |
29 test("runs a test suite on a matching platform", () { | 22 test("runs a test suite on a matching platform", () { |
30 _writeTestFile("vm_test.dart", suiteTestOn: "vm"); | 23 _writeTestFile("vm_test.dart", suiteTestOn: "vm"); |
31 | 24 |
32 var result = _runTest(["vm_test.dart"]); | 25 var test = runTest(["vm_test.dart"]); |
33 expect(result.stdout, contains("All tests passed!")); | 26 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
34 expect(result.exitCode, equals(0)); | 27 test.shouldExit(0); |
35 }); | 28 }); |
36 | 29 |
37 test("doesn't run a test suite on a non-matching platform", () { | 30 test("doesn't run a test suite on a non-matching platform", () { |
38 _writeTestFile("vm_test.dart", suiteTestOn: "vm"); | 31 _writeTestFile("vm_test.dart", suiteTestOn: "vm"); |
39 | 32 |
40 var result = _runTest(["--platform", "content-shell", "vm_test.dart"]); | 33 var test = runTest(["--platform", "content-shell", "vm_test.dart"]); |
41 expect(result.stdout, contains("No tests ran.")); | 34 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
42 expect(result.exitCode, equals(0)); | 35 test.shouldExit(0); |
43 }); | 36 }); |
44 | 37 |
45 test("runs a test suite on a matching operating system", () { | 38 test("runs a test suite on a matching operating system", () { |
46 _writeTestFile("os_test.dart", suiteTestOn: currentOS.name); | 39 _writeTestFile("os_test.dart", suiteTestOn: currentOS.name); |
47 | 40 |
48 var result = _runTest(["os_test.dart"]); | 41 var test = runTest(["os_test.dart"]); |
49 expect(result.stdout, contains("All tests passed!")); | 42 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
50 expect(result.exitCode, equals(0)); | 43 test.shouldExit(0); |
51 }); | 44 }); |
52 | 45 |
53 test("doesn't run a test suite on a non-matching operating system", () { | 46 test("doesn't run a test suite on a non-matching operating system", () { |
54 _writeTestFile("os_test.dart", suiteTestOn: _otherOS, | 47 _writeTestFile("os_test.dart", suiteTestOn: _otherOS, |
55 loadable: false); | 48 loadable: false); |
56 | 49 |
57 var result = _runTest(["os_test.dart"]); | 50 var test = runTest(["os_test.dart"]); |
58 expect(result.stdout, contains("No tests ran.")); | 51 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
59 expect(result.exitCode, equals(0)); | 52 test.shouldExit(0); |
60 }); | 53 }); |
61 | 54 |
62 test("only loads matching files when loading as a group", () { | 55 test("only loads matching files when loading as a group", () { |
63 _writeTestFile("vm_test.dart", suiteTestOn: "vm"); | 56 _writeTestFile("vm_test.dart", suiteTestOn: "vm"); |
64 _writeTestFile("browser_test.dart", | 57 _writeTestFile("browser_test.dart", |
65 suiteTestOn: "browser", loadable: false); | 58 suiteTestOn: "browser", loadable: false); |
66 _writeTestFile("this_os_test.dart", suiteTestOn: currentOS.name); | 59 _writeTestFile("this_os_test.dart", suiteTestOn: currentOS.name); |
67 _writeTestFile("other_os_test.dart", | 60 _writeTestFile("other_os_test.dart", |
68 suiteTestOn: _otherOS, loadable: false); | 61 suiteTestOn: _otherOS, loadable: false); |
69 | 62 |
70 var result = _runTest(["."]); | 63 var test = runTest(["."]); |
71 expect(result.stdout, contains("+2: All tests passed!")); | 64 test.stdout.expect(consumeThrough(contains("+2: All tests passed!"))); |
72 expect(result.exitCode, equals(0)); | 65 test.shouldExit(0); |
73 }); | 66 }); |
74 }); | 67 }); |
75 | 68 |
76 group("for group", () { | 69 group("for group", () { |
77 test("runs a VM group on the VM", () { | 70 test("runs a VM group on the VM", () { |
78 _writeTestFile("vm_test.dart", groupTestOn: "vm"); | 71 _writeTestFile("vm_test.dart", groupTestOn: "vm"); |
79 | 72 |
80 var result = _runTest(["vm_test.dart"]); | 73 var test = runTest(["vm_test.dart"]); |
81 expect(result.stdout, contains("All tests passed!")); | 74 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
82 expect(result.exitCode, equals(0)); | 75 test.shouldExit(0); |
83 }); | 76 }); |
84 | 77 |
85 test("doesn't run a Browser group on the VM", () { | 78 test("doesn't run a Browser group on the VM", () { |
86 _writeTestFile("browser_test.dart", groupTestOn: "browser"); | 79 _writeTestFile("browser_test.dart", groupTestOn: "browser"); |
87 | 80 |
88 var result = _runTest(["browser_test.dart"]); | 81 var test = runTest(["browser_test.dart"]); |
89 expect(result.stdout, contains("No tests ran.")); | 82 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
90 expect(result.exitCode, equals(0)); | 83 test.shouldExit(0); |
91 }); | 84 }); |
92 | 85 |
93 test("runs a browser group on a browser", () { | 86 test("runs a browser group on a browser", () { |
94 _writeTestFile("browser_test.dart", groupTestOn: "browser"); | 87 _writeTestFile("browser_test.dart", groupTestOn: "browser"); |
95 | 88 |
96 var result = _runTest( | 89 var test = runTest( |
97 ["--platform", "content-shell", "browser_test.dart"]); | 90 ["--platform", "content-shell", "browser_test.dart"]); |
98 expect(result.stdout, contains("All tests passed!")); | 91 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
99 expect(result.exitCode, equals(0)); | 92 test.shouldExit(0); |
100 }); | 93 }); |
101 | 94 |
102 test("doesn't run a VM group on a browser", () { | 95 test("doesn't run a VM group on a browser", () { |
103 _writeTestFile("vm_test.dart", groupTestOn: "vm"); | 96 _writeTestFile("vm_test.dart", groupTestOn: "vm"); |
104 | 97 |
105 var result = _runTest(["--platform", "content-shell", "vm_test.dart"]); | 98 var test = runTest(["--platform", "content-shell", "vm_test.dart"]); |
106 expect(result.stdout, contains("No tests ran.")); | 99 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
107 expect(result.exitCode, equals(0)); | 100 test.shouldExit(0); |
108 }); | 101 }); |
109 }); | 102 }); |
110 | 103 |
111 group("for test", () { | 104 group("for test", () { |
112 test("runs a VM test on the VM", () { | 105 test("runs a VM test on the VM", () { |
113 _writeTestFile("vm_test.dart", testTestOn: "vm"); | 106 _writeTestFile("vm_test.dart", testTestOn: "vm"); |
114 | 107 |
115 var result = _runTest(["vm_test.dart"]); | 108 var test = runTest(["vm_test.dart"]); |
116 expect(result.stdout, contains("All tests passed!")); | 109 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
117 expect(result.exitCode, equals(0)); | 110 test.shouldExit(0); |
118 }); | 111 }); |
119 | 112 |
120 test("doesn't run a browser test on the VM", () { | 113 test("doesn't run a browser test on the VM", () { |
121 _writeTestFile("browser_test.dart", testTestOn: "browser"); | 114 _writeTestFile("browser_test.dart", testTestOn: "browser"); |
122 | 115 |
123 var result = _runTest(["browser_test.dart"]); | 116 var test = runTest(["browser_test.dart"]); |
124 expect(result.stdout, contains("No tests ran.")); | 117 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
125 expect(result.exitCode, equals(0)); | 118 test.shouldExit(0); |
126 }); | 119 }); |
127 | 120 |
128 test("runs a browser test on a browser", () { | 121 test("runs a browser test on a browser", () { |
129 _writeTestFile("browser_test.dart", testTestOn: "browser"); | 122 _writeTestFile("browser_test.dart", testTestOn: "browser"); |
130 | 123 |
131 var result = _runTest( | 124 var test = runTest( |
132 ["--platform", "content-shell", "browser_test.dart"]); | 125 ["--platform", "content-shell", "browser_test.dart"]); |
133 expect(result.stdout, contains("All tests passed!")); | 126 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
134 expect(result.exitCode, equals(0)); | 127 test.shouldExit(0); |
135 }); | 128 }); |
136 | 129 |
137 test("doesn't run a VM test on a browser", () { | 130 test("doesn't run a VM test on a browser", () { |
138 _writeTestFile("vm_test.dart", testTestOn: "vm"); | 131 _writeTestFile("vm_test.dart", testTestOn: "vm"); |
139 | 132 |
140 var result = _runTest(["--platform", "content-shell", "vm_test.dart"]); | 133 var test = runTest(["--platform", "content-shell", "vm_test.dart"]); |
141 expect(result.stdout, contains("No tests ran.")); | 134 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
142 expect(result.exitCode, equals(0)); | 135 test.shouldExit(0); |
143 }); | 136 }); |
144 }); | 137 }); |
145 | 138 |
146 group("with suite, group, and test selectors", () { | 139 group("with suite, group, and test selectors", () { |
147 test("runs the test if all selectors match", () { | 140 test("runs the test if all selectors match", () { |
148 _writeTestFile("vm_test.dart", suiteTestOn: "!browser", | 141 _writeTestFile("vm_test.dart", suiteTestOn: "!browser", |
149 groupTestOn: "!js", testTestOn: "vm"); | 142 groupTestOn: "!js", testTestOn: "vm"); |
150 | 143 |
151 var result = _runTest(["vm_test.dart"]); | 144 var test = runTest(["vm_test.dart"]); |
152 expect(result.stdout, contains("All tests passed!")); | 145 test.stdout.expect(consumeThrough(contains("All tests passed!"))); |
153 expect(result.exitCode, equals(0)); | 146 test.shouldExit(0); |
154 }); | 147 }); |
155 | 148 |
156 test("doesn't runs the test if the suite doesn't match", () { | 149 test("doesn't runs the test if the suite doesn't match", () { |
157 _writeTestFile("vm_test.dart", suiteTestOn: "browser", | 150 _writeTestFile("vm_test.dart", suiteTestOn: "browser", |
158 groupTestOn: "!js", testTestOn: "vm"); | 151 groupTestOn: "!js", testTestOn: "vm"); |
159 | 152 |
160 var result = _runTest(["vm_test.dart"]); | 153 var test = runTest(["vm_test.dart"]); |
161 expect(result.stdout, contains("No tests ran.")); | 154 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
162 expect(result.exitCode, equals(0)); | 155 test.shouldExit(0); |
163 }); | 156 }); |
164 | 157 |
165 test("doesn't runs the test if the group doesn't match", () { | 158 test("doesn't runs the test if the group doesn't match", () { |
166 _writeTestFile("vm_test.dart", suiteTestOn: "!browser", | 159 _writeTestFile("vm_test.dart", suiteTestOn: "!browser", |
167 groupTestOn: "browser", testTestOn: "vm"); | 160 groupTestOn: "browser", testTestOn: "vm"); |
168 | 161 |
169 var result = _runTest(["vm_test.dart"]); | 162 var test = runTest(["vm_test.dart"]); |
170 expect(result.stdout, contains("No tests ran.")); | 163 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
171 expect(result.exitCode, equals(0)); | 164 test.shouldExit(0); |
172 }); | 165 }); |
173 | 166 |
174 test("doesn't runs the test if the test doesn't match", () { | 167 test("doesn't runs the test if the test doesn't match", () { |
175 _writeTestFile("vm_test.dart", suiteTestOn: "!browser", | 168 _writeTestFile("vm_test.dart", suiteTestOn: "!browser", |
176 groupTestOn: "!js", testTestOn: "browser"); | 169 groupTestOn: "!js", testTestOn: "browser"); |
177 | 170 |
178 var result = _runTest(["vm_test.dart"]); | 171 var test = runTest(["vm_test.dart"]); |
179 expect(result.stdout, contains("No tests ran.")); | 172 test.stdout.expect(consumeThrough(contains("No tests ran."))); |
180 expect(result.exitCode, equals(0)); | 173 test.shouldExit(0); |
181 }); | 174 }); |
182 }); | 175 }); |
183 } | 176 } |
184 | 177 |
185 /// Writes a test file with some platform selectors to [filename]. | 178 /// Writes a test file with some platform selectors to [filename]. |
186 /// | 179 /// |
187 /// Each of [suiteTestOn], [groupTestOn], and [testTestOn] is a platform | 180 /// Each of [suiteTestOn], [groupTestOn], and [testTestOn] is a platform |
188 /// selector that's suite-, group-, and test-level respectively. If [loadable] | 181 /// selector that's suite-, group-, and test-level respectively. If [loadable] |
189 /// is `false`, the test file will be made unloadable on the Dart VM. | 182 /// is `false`, the test file will be made unloadable on the Dart VM. |
190 void _writeTestFile(String filename, {String suiteTestOn, String groupTestOn, | 183 void _writeTestFile(String filename, {String suiteTestOn, String groupTestOn, |
(...skipping 14 matching lines...) Expand all Loading... |
205 } | 198 } |
206 | 199 |
207 if (groupTestOn != null) { | 200 if (groupTestOn != null) { |
208 buffer.writeln(" }, testOn: '$groupTestOn');"); | 201 buffer.writeln(" }, testOn: '$groupTestOn');"); |
209 } else { | 202 } else { |
210 buffer.writeln(" });"); | 203 buffer.writeln(" });"); |
211 } | 204 } |
212 | 205 |
213 buffer.writeln("}"); | 206 buffer.writeln("}"); |
214 | 207 |
215 new File(p.join(_sandbox, filename)).writeAsStringSync(buffer.toString()); | 208 d.file(filename, buffer.toString()).create(); |
216 } | 209 } |
217 | |
218 ProcessResult _runTest(List<String> args) => | |
219 runTest(args, workingDirectory: _sandbox); | |
OLD | NEW |