7b94d56d67
_ConsoleStreamPrinter::onEvent expects isolate on WriteEvent. It's absence causes exceptions in Observatory. This started with https://dart-review.googlesource.com/c/sdk/+/190303 TEST=updated capture_stdio_test with isolate expectations; run observatory to ensure to exceptions are generated Change-Id: I73efe9c1ab5b0d779d9432fd64ad5ccc5fcc14ca Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191661 Commit-Queue: Alexander Aprelev <aam@google.com> Reviewed-by: Ryan Macnak <rmacnak@google.com>
84 lines
2.3 KiB
Dart
84 lines
2.3 KiB
Dart
// Copyright (c) 2015, 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.
|
|
|
|
import 'dart:async';
|
|
import 'dart:developer';
|
|
import 'dart:io';
|
|
import 'package:observatory/service_io.dart';
|
|
import 'package:test/test.dart';
|
|
import 'service_test_common.dart';
|
|
import 'test_helper.dart';
|
|
|
|
void test() {
|
|
debugger();
|
|
stdout.write('stdout');
|
|
|
|
debugger();
|
|
print('print');
|
|
|
|
debugger();
|
|
stderr.write('stderr');
|
|
}
|
|
|
|
var tests = <IsolateTest>[
|
|
hasStoppedAtBreakpoint,
|
|
(Isolate isolate) async {
|
|
Completer completer = new Completer();
|
|
var stdoutSub;
|
|
stdoutSub = await isolate.vm.listenEventStream(VM.kStdoutStream,
|
|
(ServiceEvent event) {
|
|
expect(event.isolate != null, isTrue);
|
|
expect(event.kind, equals('WriteEvent'));
|
|
expect(event.bytesAsString, equals('stdout'));
|
|
stdoutSub.cancel().then((_) {
|
|
completer.complete();
|
|
});
|
|
});
|
|
await isolate.resume();
|
|
await completer.future;
|
|
},
|
|
hasStoppedAtBreakpoint,
|
|
(Isolate isolate) async {
|
|
Completer completer = new Completer();
|
|
var stdoutSub;
|
|
int eventNumber = 1;
|
|
stdoutSub = await isolate.vm.listenEventStream(VM.kStdoutStream,
|
|
(ServiceEvent event) {
|
|
expect(event.isolate != null, isTrue);
|
|
expect(event.kind, equals('WriteEvent'));
|
|
if (eventNumber == 1) {
|
|
expect(event.bytesAsString, equals('print'));
|
|
} else if (eventNumber == 2) {
|
|
expect(event.bytesAsString, equals('\n'));
|
|
stdoutSub.cancel().then((_) {
|
|
completer.complete();
|
|
});
|
|
} else {
|
|
expect(true, false);
|
|
}
|
|
eventNumber++;
|
|
});
|
|
await isolate.resume();
|
|
await completer.future;
|
|
},
|
|
hasStoppedAtBreakpoint,
|
|
(Isolate isolate) async {
|
|
Completer completer = new Completer();
|
|
var stderrSub;
|
|
stderrSub = await isolate.vm.listenEventStream(VM.kStderrStream,
|
|
(ServiceEvent event) {
|
|
expect(event.isolate != null, isTrue);
|
|
expect(event.kind, equals('WriteEvent'));
|
|
expect(event.bytesAsString, equals('stderr'));
|
|
stderrSub.cancel().then((_) {
|
|
completer.complete();
|
|
});
|
|
});
|
|
await isolate.resume();
|
|
await completer.future;
|
|
},
|
|
];
|
|
|
|
main(args) => runIsolateTests(args, tests, testeeConcurrent: test);
|