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 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:isolate'; | 6 import 'dart:isolate'; |
7 | 7 |
8 import 'package:unittest/src/declarer.dart'; | |
9 import 'package:unittest/src/invoker.dart'; | 8 import 'package:unittest/src/invoker.dart'; |
10 import 'package:unittest/src/isolate_test.dart'; | 9 import 'package:unittest/src/isolate_test.dart'; |
11 import 'package:unittest/src/live_test.dart'; | 10 import 'package:unittest/src/live_test.dart'; |
12 import 'package:unittest/src/remote_exception.dart'; | 11 import 'package:unittest/src/remote_exception.dart'; |
13 import 'package:unittest/src/state.dart'; | 12 import 'package:unittest/src/state.dart'; |
14 import 'package:unittest/src/suite.dart'; | 13 import 'package:unittest/src/suite.dart'; |
15 import 'package:unittest/src/vm_listener.dart'; | 14 import 'package:unittest/src/vm_listener.dart'; |
16 import 'package:unittest/unittest.dart'; | 15 import 'package:unittest/unittest.dart'; |
17 | 16 |
18 import 'utils.dart'; | 17 import 'utils.dart'; |
19 | 18 |
20 /// The current declarer. | |
21 Declarer get _declarer => Zone.current[#unittest.declarer]; | |
22 | |
23 /// An isolate that's been spun up for the current test. | 19 /// An isolate that's been spun up for the current test. |
24 /// | 20 /// |
25 /// This is tracked so that it can be killed once the test is done. | 21 /// This is tracked so that it can be killed once the test is done. |
26 Isolate _isolate; | 22 Isolate _isolate; |
27 | 23 |
28 /// A live test that's running for the current test. | 24 /// A live test that's running for the current test. |
29 /// | 25 /// |
30 /// This is tracked so that it can be closed once the test is done. | 26 /// This is tracked so that it can be closed once the test is done. |
31 LiveTest _liveTest; | 27 LiveTest _liveTest; |
32 | 28 |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 void _nonFunction(SendPort sendPort) => | 301 void _nonFunction(SendPort sendPort) => |
306 VmListener.start(sendPort, () => null); | 302 VmListener.start(sendPort, () => null); |
307 | 303 |
308 /// An isolate entrypoint that returns a function with the wrong arity. | 304 /// An isolate entrypoint that returns a function with the wrong arity. |
309 void _wrongArity(SendPort sendPort) => | 305 void _wrongArity(SendPort sendPort) => |
310 VmListener.start(sendPort, () => (_) {}); | 306 VmListener.start(sendPort, () => (_) {}); |
311 | 307 |
312 /// An isolate entrypoint that defines three tests that succeed. | 308 /// An isolate entrypoint that defines three tests that succeed. |
313 void _successfulTests(SendPort sendPort) { | 309 void _successfulTests(SendPort sendPort) { |
314 VmListener.start(sendPort, () => () { | 310 VmListener.start(sendPort, () => () { |
315 _declarer.test("successful 1", () {}); | 311 test("successful 1", () {}); |
316 _declarer.test("successful 2", () {}); | 312 test("successful 2", () {}); |
317 _declarer.test("successful 3", () {}); | 313 test("successful 3", () {}); |
318 }); | 314 }); |
319 } | 315 } |
320 | 316 |
321 /// An isolate entrypoint that defines a test that fails. | 317 /// An isolate entrypoint that defines a test that fails. |
322 void _failingTest(SendPort sendPort) { | 318 void _failingTest(SendPort sendPort) { |
323 VmListener.start(sendPort, () => () { | 319 VmListener.start(sendPort, () => () { |
324 _declarer.test("failure", () => throw new TestFailure('oh no')); | 320 test("failure", () => throw new TestFailure('oh no')); |
325 }); | 321 }); |
326 } | 322 } |
327 | 323 |
328 /// An isolate entrypoint that defines a test that fails after succeeding. | 324 /// An isolate entrypoint that defines a test that fails after succeeding. |
329 void _failAfterSucceedTest(SendPort sendPort) { | 325 void _failAfterSucceedTest(SendPort sendPort) { |
330 VmListener.start(sendPort, () => () { | 326 VmListener.start(sendPort, () => () { |
331 _declarer.test("fail after succeed", () { | 327 test("fail after succeed", () { |
332 pumpEventQueue().then((_) { | 328 pumpEventQueue().then((_) { |
333 throw new TestFailure('oh no'); | 329 throw new TestFailure('oh no'); |
334 }); | 330 }); |
335 }); | 331 }); |
336 }); | 332 }); |
337 } | 333 } |
338 | 334 |
339 /// An isolate entrypoint that defines a test that fails multiple times. | 335 /// An isolate entrypoint that defines a test that fails multiple times. |
340 void _multiFailTest(SendPort sendPort) { | 336 void _multiFailTest(SendPort sendPort) { |
341 VmListener.start(sendPort, () => () { | 337 VmListener.start(sendPort, () => () { |
342 _declarer.test("multiple failures", () { | 338 test("multiple failures", () { |
343 Invoker.current.addOutstandingCallback(); | 339 Invoker.current.addOutstandingCallback(); |
344 new Future(() => throw new TestFailure("one")); | 340 new Future(() => throw new TestFailure("one")); |
345 new Future(() => throw new TestFailure("two")); | 341 new Future(() => throw new TestFailure("two")); |
346 new Future(() => throw new TestFailure("three")); | 342 new Future(() => throw new TestFailure("three")); |
347 new Future(() => throw new TestFailure("four")); | 343 new Future(() => throw new TestFailure("four")); |
348 }); | 344 }); |
349 }); | 345 }); |
350 } | 346 } |
351 | 347 |
352 /// An isolate entrypoint that defines a test that errors. | 348 /// An isolate entrypoint that defines a test that errors. |
353 void _errorTest(SendPort sendPort) { | 349 void _errorTest(SendPort sendPort) { |
354 VmListener.start(sendPort, () => () { | 350 VmListener.start(sendPort, () => () { |
355 _declarer.test("error", () => throw 'oh no'); | 351 test("error", () => throw 'oh no'); |
356 }); | 352 }); |
357 } | 353 } |
358 | 354 |
359 /// An isolate entrypoint that defines a test that errors after succeeding. | 355 /// An isolate entrypoint that defines a test that errors after succeeding. |
360 void _errorAfterSucceedTest(SendPort sendPort) { | 356 void _errorAfterSucceedTest(SendPort sendPort) { |
361 VmListener.start(sendPort, () => () { | 357 VmListener.start(sendPort, () => () { |
362 _declarer.test("error after succeed", () { | 358 test("error after succeed", () { |
363 pumpEventQueue().then((_) => throw 'oh no'); | 359 pumpEventQueue().then((_) => throw 'oh no'); |
364 }); | 360 }); |
365 }); | 361 }); |
366 } | 362 } |
367 | 363 |
368 /// An isolate entrypoint that defines a test that errors multiple times. | 364 /// An isolate entrypoint that defines a test that errors multiple times. |
369 void _multiErrorTest(SendPort sendPort) { | 365 void _multiErrorTest(SendPort sendPort) { |
370 VmListener.start(sendPort, () => () { | 366 VmListener.start(sendPort, () => () { |
371 _declarer.test("multiple errors", () { | 367 test("multiple errors", () { |
372 Invoker.current.addOutstandingCallback(); | 368 Invoker.current.addOutstandingCallback(); |
373 new Future(() => throw "one"); | 369 new Future(() => throw "one"); |
374 new Future(() => throw "two"); | 370 new Future(() => throw "two"); |
375 new Future(() => throw "three"); | 371 new Future(() => throw "three"); |
376 new Future(() => throw "four"); | 372 new Future(() => throw "four"); |
377 }); | 373 }); |
378 }); | 374 }); |
379 } | 375 } |
OLD | NEW |