Index: tests/standalone/debugger/debug_lib.dart |
diff --git a/tests/standalone/debugger/debug_lib.dart b/tests/standalone/debugger/debug_lib.dart |
index 6a38ca4172597591b228ec26b501129ddaa60571..d71f3e64310b34dbbbcba321bd880e2431c1cc80 100644 |
--- a/tests/standalone/debugger/debug_lib.dart |
+++ b/tests/standalone/debugger/debug_lib.dart |
@@ -310,8 +310,6 @@ class Debugger { |
Process targetProcess; |
int portNumber; |
Socket socket; |
- OutputStream to; |
- StringInputStream from; |
JsonBuffer responses = new JsonBuffer(); |
DebugScript script; |
@@ -324,22 +322,33 @@ class Debugger { |
String scriptUrl = null; |
bool shutdownEventSeen = false; |
int isolateId = 0; |
- |
+ |
+ // stdin subscription to allow terminating the test via command-line. |
+ var stdinSubscription; |
+ |
Debugger(this.targetProcess, this.portNumber) { |
- var targetStdout = new StringInputStream(targetProcess.stdout); |
- targetStdout.onLine = () { |
- var s = targetStdout.readLine(); |
+ stdinSubscription = |
+ stdin.listen((d) {}, |
+ onError: (error) => close(killDebugee: true), |
+ onDone: () => close(killDebugee: true)); |
+ |
+ var stdoutStringStream = targetProcess.stdout |
+ .transform(new StringDecoder()) |
+ .transform(new LineTransformer()); |
+ stdoutStringStream.listen((line) { |
if (showDebuggeeOutput) { |
- print("TARG: $s"); |
+ print("TARG: $line"); |
} |
- }; |
- var targetStderr = new StringInputStream(targetProcess.stderr); |
- targetStderr.onLine = () { |
- var s = targetStderr.readLine(); |
+ }); |
+ |
+ var stderrStringStream = targetProcess.stderr |
+ .transform(new StringDecoder()) |
+ .transform(new LineTransformer()); |
+ stderrStringStream.listen((line) { |
if (showDebuggeeOutput) { |
- print("TARG: $s"); |
+ print("TARG: $line"); |
} |
- }; |
+ }); |
} |
// Handle debugger events for which there is no explicit |
@@ -451,7 +460,7 @@ class Debugger { |
void sendMessage(Map<String,dynamic> msg) { |
String jsonMsg = JSON.stringify(msg); |
if (verboseWire) print("SEND: $jsonMsg"); |
- to.writeString(jsonMsg, Encoding.UTF_8); |
+ socket.addString(jsonMsg); |
} |
bool get errorsDetected => errors.length > 0; |
@@ -462,34 +471,36 @@ class Debugger { |
} |
void openConnection() { |
- socket = new Socket("127.0.0.1", portNumber); |
- to = socket.outputStream; |
- from = new StringInputStream(socket.inputStream, Encoding.UTF_8); |
- from.onData = () { |
- try { |
- responses.append(from.read()); |
- handleMessages(); |
- } catch(e, trace) { |
- print("Unexpected exception:\n$e\n$trace"); |
- close(killDebugee: true); |
- } |
- }; |
- from.onClosed = () { |
- print("Connection closed by debug target"); |
- close(killDebugee: true); |
- }; |
- from.onError = (e) { |
- print("Error '$e' detected in input stream from debug target"); |
- close(killDebugee: true); |
- }; |
+ Socket.connect("127.0.0.1", portNumber).then((s) { |
+ socket = s; |
+ var stringStream = socket.transform(new StringDecoder()); |
+ stringStream.listen( |
+ (str) { |
+ try { |
+ responses.append(str); |
+ handleMessages(); |
+ } catch(e, trace) { |
+ print("Unexpected exception:\n$e\n$trace"); |
+ close(killDebugee: true); |
+ } |
+ }, |
+ onDone: () { |
+ print("Connection closed by debug target"); |
+ close(killDebugee: true); |
+ }, |
+ onError: (e) { |
+ print("Error '$e' detected in input stream from debug target"); |
+ close(killDebugee: true); |
+ }); |
+ }); |
} |
void close({killDebugee: false}) { |
if (errorsDetected) { |
for (int i = 0; i < errors.length; i++) print(errors[i]); |
} |
- to.close(); |
socket.close(); |
+ stdinSubscription.cancel(); |
if (killDebugee) { |
targetProcess.kill(); |
print("Target process killed"); |
@@ -518,15 +529,12 @@ bool RunScript(List script) { |
Process.start(options.executable, targetOpts).then((Process process) { |
print("Debug target process started"); |
process.stdin.close(); |
- process.stdout.onData = process.stdout.read; |
- process.stderr.onData = process.stderr.read; |
- process.onExit = (int exitCode) { |
+ process.exitCode.then((int exitCode) { |
+ Expect.equals(0, exitCode); |
Expect.equals(0, exitCode); |
print("Debug target process exited with exit code $exitCode"); |
- }; |
+ }); |
var debugger = new Debugger(process, debugPort); |
- stdin.onClosed = () => debugger.close(killDebugee: true); |
- stdin.onError = (error) => debugger.close(killDebugee: true); |
debugger.runScript(script); |
}); |
return true; |