Unverified Commit d30ad47e authored by Lau Ching Jun's avatar Lau Ching Jun Committed by GitHub

Make flutter attach respect the `--dds-port` flag. (#105560)

parent 01822a48
...@@ -428,6 +428,7 @@ known, it can be explicitly provided to attach via the command-line, e.g. ...@@ -428,6 +428,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
final DebuggingOptions debuggingOptions = DebuggingOptions.enabled( final DebuggingOptions debuggingOptions = DebuggingOptions.enabled(
buildInfo, buildInfo,
enableDds: enableDds, enableDds: enableDds,
ddsPort: ddsPort,
devToolsServerAddress: devToolsServerAddress, devToolsServerAddress: devToolsServerAddress,
); );
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
import 'package:file/file.dart'; import 'package:file/file.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:vm_service/vm_service.dart'; import 'package:vm_service/vm_service.dart';
import '../src/common.dart'; import '../src/common.dart';
...@@ -10,14 +11,30 @@ import 'test_data/basic_project.dart'; ...@@ -10,14 +11,30 @@ import 'test_data/basic_project.dart';
import 'test_driver.dart'; import 'test_driver.dart';
import 'test_utils.dart'; import 'test_utils.dart';
Future<int> getFreePort() async {
int port = 0;
final ServerSocket serverSocket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
port = serverSocket.port;
await serverSocket.close();
return port;
}
void main() { void main() {
late FlutterRunTestDriver flutterRun, flutterAttach;
final BasicProject project = BasicProject(); final BasicProject project = BasicProject();
late Directory tempDir; late Directory tempDir;
setUp(() async { setUp(() async {
tempDir = createResolvedTempDirectorySync('attach_test.'); tempDir = createResolvedTempDirectorySync('attach_test.');
await project.setUpIn(tempDir); await project.setUpIn(tempDir);
});
tearDown(() {
tryToDelete(tempDir);
});
group('DDS in flutter run', () {
late FlutterRunTestDriver flutterRun, flutterAttach;
setUp(() {
flutterRun = FlutterRunTestDriver(tempDir, logPrefix: ' RUN '); flutterRun = FlutterRunTestDriver(tempDir, logPrefix: ' RUN ');
flutterAttach = FlutterRunTestDriver( flutterAttach = FlutterRunTestDriver(
tempDir, tempDir,
...@@ -32,7 +49,6 @@ void main() { ...@@ -32,7 +49,6 @@ void main() {
tearDown(() async { tearDown(() async {
await flutterAttach.detach(); await flutterAttach.detach();
await flutterRun.stop(); await flutterRun.stop();
tryToDelete(tempDir);
}); });
testWithoutContext('can hot reload', () async { testWithoutContext('can hot reload', () async {
...@@ -103,4 +119,42 @@ void main() { ...@@ -103,4 +119,42 @@ void main() {
matches: equals(vmServiceUri), matches: equals(vmServiceUri),
); );
}); });
});
group('DDS in flutter attach', () {
late FlutterRunTestDriver flutterRun, flutterAttach;
setUp(() {
flutterRun = FlutterRunTestDriver(
tempDir,
logPrefix: ' RUN ',
spawnDdsInstance: false,
);
flutterAttach = FlutterRunTestDriver(
tempDir,
logPrefix: 'ATTACH ',
);
});
tearDown(() async {
await flutterAttach.detach();
await flutterRun.stop();
});
testWithoutContext('uses the designated dds port', () async {
final int ddsPort = await getFreePort();
await flutterRun.run(withDebugger: true);
await flutterAttach.attach(
flutterRun.vmServicePort!,
additionalCommandArgs: <String>[
'--dds-port=$ddsPort',
],
);
final Response response = await flutterAttach.callServiceExtension('ext.flutter.connectedVmServiceUri');
final String vmServiceUriString = response.json!['value'] as String;
final Uri vmServiceUri = Uri.parse(vmServiceUriString);
expect(vmServiceUri.port, equals(ddsPort));
});
});
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment