Chromium Code Reviews| Index: tests/standalone/io/stdio_socket_finalizer_test.dart |
| diff --git a/tests/standalone/io/stdio_socket_finalizer_test.dart b/tests/standalone/io/stdio_socket_finalizer_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..63539cb4afbcc5df675c1ec9edf5ae419010768e |
| --- /dev/null |
| +++ b/tests/standalone/io/stdio_socket_finalizer_test.dart |
| @@ -0,0 +1,36 @@ |
| +// Copyright (c) 2017, 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. |
| +// |
| +// This test checks that stdin is *not* closed when an Isolate leaks it. |
| + |
| +import 'dart:async'; |
| +import 'dart:io'; |
| +import 'dart:isolate'; |
| + |
| +import "package:async_helper/async_helper.dart"; |
| +import "package:expect/expect.dart"; |
| + |
| +void ConnectorIsolate(SendPort sendPort) { |
| + stdin; |
| + sendPort.send(true); |
| +} |
| + |
| +main() async { |
| + asyncStart(); |
| + ReceivePort receivePort = new ReceivePort(); |
| + ReceivePort errorPort = new ReceivePort(); |
|
rmacnak
2017/04/04 20:34:46
Dead
zra
2017/04/04 20:50:39
Done.
|
| + Isolate isolate = await Isolate.spawn(ConnectorIsolate, receivePort.sendPort); |
| + Completer<Null> completer = new Completer<Null>(); |
| + receivePort.listen((msg) { |
| + Expect.isTrue(msg is bool); |
| + Expect.isTrue(msg); |
| + isolate.kill(); |
| + completer.complete(null); |
| + }); |
| + await completer.future; |
| + stdin.listen((_) {}).cancel(); |
| + errorPort.close(); |
| + receivePort.close(); |
| + asyncEnd(); |
| +} |