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