| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file | |
| 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.md file. | |
| 4 | |
| 5 /// Used for testing compiler/debugger session when VM socket is closed | |
| 6 /// unexpectedly. | |
| 7 library fletchc.test.client.test_vm_connection; | |
| 8 | |
| 9 import 'dart:async' show | |
| 10 Future; | |
| 11 | |
| 12 import 'dart:io' show | |
| 13 InternetAddress; | |
| 14 | |
| 15 import 'dart:isolate' show | |
| 16 SendPort; | |
| 17 | |
| 18 import 'package:expect/expect.dart' show | |
| 19 Expect; | |
| 20 | |
| 21 import 'package:fletchc/src/hub/session_manager.dart' show | |
| 22 SessionState; | |
| 23 | |
| 24 import 'package:fletchc/src/worker/developer.dart' show | |
| 25 attachToVm; | |
| 26 | |
| 27 import 'package:fletchc/vm_commands.dart' show | |
| 28 VmCommandCode; | |
| 29 | |
| 30 import '../run.dart' show | |
| 31 FletchRunner; | |
| 32 | |
| 33 import 'mock_vm.dart' show | |
| 34 MockVm; | |
| 35 | |
| 36 class MockVmRunner extends FletchRunner { | |
| 37 final bool closeImmediately; | |
| 38 final VmCommandCode closeAfterFirst; | |
| 39 | |
| 40 MockVm vm; | |
| 41 | |
| 42 MockVmRunner({this.closeImmediately: false, this.closeAfterFirst}); | |
| 43 | |
| 44 Future<Null> attach(SessionState state) async { | |
| 45 vm = await MockVm.spawn( | |
| 46 closeImmediately: closeImmediately, closeAfterFirst: closeAfterFirst); | |
| 47 await attachToVm(InternetAddress.LOOPBACK_IP_V4.address, vm.port, state); | |
| 48 } | |
| 49 | |
| 50 Future<int> run(List<String> arguments, {int expectedExitCode: 0}) async { | |
| 51 await super.run(arguments); | |
| 52 int exitCode = await vm.exitCode; | |
| 53 print("Mock VM exit code: $exitCode"); | |
| 54 return exitCode; | |
| 55 } | |
| 56 } | |
| 57 | |
| 58 main(List<String> arguments) async { | |
| 59 await new MockVmRunner().run(arguments); | |
| 60 } | |
| 61 | |
| 62 Future<Null> test() => main(<String>['tests/language/application_test.dart']); | |
| 63 | |
| 64 Future<Null> testCloseImmediately() async { | |
| 65 int result = await new MockVmRunner(closeImmediately: true) | |
| 66 .run(<String>['tests/language/application_test.dart']); | |
| 67 // TODO(ahe): The actual exit code is TBD. | |
| 68 Expect.equals(1, result); | |
| 69 } | |
| 70 | |
| 71 Future<Null> testCloseAfterCommitChanges() async { | |
| 72 int result = | |
| 73 await new MockVmRunner(closeAfterFirst: VmCommandCode.CommitChanges) | |
| 74 .run(<String>['tests/language/application_test.dart']); | |
| 75 // TODO(ahe): The actual exit code is TBD. | |
| 76 Expect.equals(1, result); | |
| 77 } | |
| 78 | |
| 79 Future<Null> testCloseAfterProcessRun() async { | |
| 80 int result = await new MockVmRunner(closeAfterFirst: VmCommandCode.ProcessRun) | |
| 81 .run(<String>['tests/language/application_test.dart']); | |
| 82 // TODO(ahe): The actual exit code is TBD. | |
| 83 Expect.equals(1, result); | |
| 84 } | |
| OLD | NEW |