From 46e48ba3b4ab8d5b6e68694448e72288627973e8 Mon Sep 17 00:00:00 2001 From: Helin Shiah Date: Mon, 9 Jan 2023 11:27:47 -0800 Subject: [PATCH] Use program during attach if provided (#118130) --- .../src/debug_adapters/flutter_adapter.dart | 1 + .../debug_adapters/flutter_adapter_args.dart | 8 +++++- .../dap/flutter_adapter_test.dart | 28 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart b/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart index edce7e97c2e1..8ebdcf7e7cd6 100644 --- a/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart +++ b/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart @@ -148,6 +148,7 @@ class FlutterDebugAdapter extends FlutterBaseDebugAdapter { customTool: args.customTool, customToolReplacesArgs: args.customToolReplacesArgs, userToolArgs: args.toolArgs, + targetProgram: args.program, ); } diff --git a/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter_args.dart b/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter_args.dart index cc58f3873315..55d1666dea12 100644 --- a/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter_args.dart +++ b/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter_args.dart @@ -17,6 +17,7 @@ class FlutterAttachRequestArguments this.customTool, this.customToolReplacesArgs, this.vmServiceUri, + this.program, super.restart, super.name, super.cwd, @@ -35,6 +36,7 @@ class FlutterAttachRequestArguments customTool = obj['customTool'] as String?, customToolReplacesArgs = obj['customToolReplacesArgs'] as int?, vmServiceUri = obj['vmServiceUri'] as String?, + program = obj['program'] as String?, super.fromMap(); static FlutterAttachRequestArguments fromJson(Map obj) => @@ -64,6 +66,9 @@ class FlutterAttachRequestArguments /// The VM Service URI of the running Flutter app to connect to. final String? vmServiceUri; + /// The program/Flutter app to be run. + final String? program; + @override Map toJson() => { ...super.toJson(), @@ -151,7 +156,8 @@ class FlutterLaunchRequestArguments if (args != null) 'args': args, if (toolArgs != null) 'toolArgs': toolArgs, if (customTool != null) 'customTool': customTool, - if (customToolReplacesArgs != null) 'customToolReplacesArgs': customToolReplacesArgs, + if (customToolReplacesArgs != null) + 'customToolReplacesArgs': customToolReplacesArgs, }; static FlutterLaunchRequestArguments fromJson(Map obj) => diff --git a/packages/flutter_tools/test/general.shard/dap/flutter_adapter_test.dart b/packages/flutter_tools/test/general.shard/dap/flutter_adapter_test.dart index 9f7fca60c2f3..7951ca05038e 100644 --- a/packages/flutter_tools/test/general.shard/dap/flutter_adapter_test.dart +++ b/packages/flutter_tools/test/general.shard/dap/flutter_adapter_test.dart @@ -209,6 +209,34 @@ void main() { expect(adapter.processArgs, containsAllInOrder(['attach', '--machine'])); }); + test('runs "flutter attach" with program if passed in', () async { + final MockFlutterDebugAdapter adapter = MockFlutterDebugAdapter( + fileSystem: MemoryFileSystem.test(style: fsStyle), + platform: platform, + ); + final Completer responseCompleter = Completer(); + + final FlutterAttachRequestArguments args = + FlutterAttachRequestArguments( + cwd: '/project', + program: 'program/main.dart', + ); + + await adapter.configurationDoneRequest(MockRequest(), null, () {}); + await adapter.attachRequest( + MockRequest(), args, responseCompleter.complete); + await responseCompleter.future; + + expect( + adapter.processArgs, + containsAllInOrder([ + 'attach', + '--machine', + '--target', + 'program/main.dart' + ])); + }); + test('does not record the VMs PID for terminating', () async { final MockFlutterDebugAdapter adapter = MockFlutterDebugAdapter( fileSystem: MemoryFileSystem.test(style: fsStyle),