| // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| /// Tests that Isolate.spawnUri completes with an error when the given URI | |
| /// doesn't resolve to an existing resource. | |
| /// | |
| /// This test is similar to spawn_uri_missing_test.dart, but tests what happens | |
| /// when Isolate.spawnUri is called from an a spawned isolate. In dart2js, | |
| /// these two situations are different. | |
| library test.isolate.spawn_uri_missing_from_isolate_test; | |
| import 'dart:isolate'; | |
| import 'dart:async'; | |
| import 'package:expect/async_helper.dart'; | |
| import 'spawn_uri_missing_test.dart'; | |
| const String SUCCESS = 'Test worked.'; | |
| void isolate(SendPort port) { | |
| doTest().then( | |
| (_) => port.send(SUCCESS), | |
| onError: (error, stack) => port.send('Test failed: $error\n$stack'), | |
| ); | |
| } | |
| main() { | |
| ReceivePort port = new ReceivePort(); | |
| Isolate.spawn(isolate, port.sendPort); | |
| Completer completer = new Completer(); | |
| port.first.then((message) { | |
| if (message == SUCCESS) { | |
| completer.complete(null); | |
| } else { | |
| completer.completeError(message); | |
| } | |
| }); | |
| asyncTest(() => completer.future); | |
| } |