1c571a12fa
Fixes https://github.com/dart-lang/sdk/issues/47964 TEST=CQ Change-Id: I4ee57bc5739835824b0052bd9470a0d52ccf161b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229948 Reviewed-by: Devon Carew <devoncarew@google.com> Commit-Queue: Ben Konyi <bkonyi@google.com>
97 lines
2.8 KiB
Dart
97 lines
2.8 KiB
Dart
// Copyright (c) 2021, 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:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:test/test.dart';
|
|
|
|
import '../utils.dart';
|
|
|
|
void main() {
|
|
group('devtools', devtools, timeout: longTimeout);
|
|
}
|
|
|
|
void devtools() {
|
|
late TestProject p;
|
|
|
|
tearDown(() async => await p.dispose());
|
|
|
|
test('--help', () async {
|
|
p = project();
|
|
var result = await p.run(['devtools', '--help']);
|
|
expect(result.exitCode, 0);
|
|
expect(result.stderr, isEmpty);
|
|
expect(result.stdout, contains('Open DevTools'));
|
|
expect(result.stdout,
|
|
contains('Usage: dart devtools [arguments] [service protocol uri]'));
|
|
|
|
// Does not show verbose help.
|
|
expect(result.stdout.contains('--try-ports'), isFalse);
|
|
});
|
|
|
|
test('--help --verbose', () async {
|
|
p = project();
|
|
var result = await p.run(['devtools', '--help', '--verbose']);
|
|
expect(result.exitCode, 0);
|
|
expect(result.stderr, isEmpty);
|
|
expect(result.stdout, contains('Open DevTools'));
|
|
expect(
|
|
result.stdout,
|
|
contains(
|
|
'Usage: dart [vm-options] devtools [arguments] [service protocol uri]'));
|
|
|
|
// Shows verbose help.
|
|
expect(result.stdout, contains('--try-ports'));
|
|
});
|
|
|
|
group('integration', () {
|
|
Process? process;
|
|
|
|
tearDown(() {
|
|
process?.kill();
|
|
});
|
|
|
|
test('serves resources', () async {
|
|
p = project();
|
|
|
|
// start the devtools server
|
|
process = await p.start(['devtools', '--no-launch-browser', '--machine']);
|
|
process!.stderr.transform(utf8.decoder).listen(print);
|
|
final Stream<String> inStream = process!.stdout
|
|
.transform<String>(utf8.decoder)
|
|
.transform<String>(const LineSplitter());
|
|
|
|
final line = await inStream.first;
|
|
final json = jsonDecode(line);
|
|
|
|
// {"event":"server.started","method":"server.started","params":{
|
|
// "host":"127.0.0.1","port":9100,"pid":93508,"protocolVersion":"1.1.0"
|
|
// }}
|
|
expect(json['event'], 'server.started');
|
|
expect(json['params'], isNotNull);
|
|
|
|
final host = json['params']['host'];
|
|
final port = json['params']['port'];
|
|
expect(host, isA<String>());
|
|
expect(port, isA<int>());
|
|
|
|
// Connect to the port and confirm we can load a devtools resource.
|
|
HttpClient client = HttpClient();
|
|
final httpRequest = await client.get(host, port, 'index.html');
|
|
final httpResponse = await httpRequest.close();
|
|
|
|
final contents =
|
|
(await httpResponse.transform(utf8.decoder).toList()).join();
|
|
client.close();
|
|
|
|
expect(contents, contains('DevTools'));
|
|
|
|
// kill the process
|
|
process!.kill();
|
|
process = null;
|
|
});
|
|
});
|
|
}
|