[flutter_tools] Use base DAP detach and ensure correct output (#119076)
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 e89f39d..d7c53c8 100644
--- a/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart
+++ b/packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart
@@ -354,7 +354,7 @@
@override
Future<void> terminateImpl() async {
if (isAttach) {
- await preventBreakingAndResume();
+ await handleDetach();
}
// Send a request to stop/detach to give Flutter chance to do some cleanup.
diff --git a/packages/flutter_tools/lib/src/debug_adapters/flutter_base_adapter.dart b/packages/flutter_tools/lib/src/debug_adapters/flutter_base_adapter.dart
index a70fdea..2d47118 100644
--- a/packages/flutter_tools/lib/src/debug_adapters/flutter_base_adapter.dart
+++ b/packages/flutter_tools/lib/src/debug_adapters/flutter_base_adapter.dart
@@ -122,7 +122,7 @@
@override
Future<void> disconnectImpl() async {
if (isAttach) {
- await preventBreakingAndResume();
+ await handleDetach();
}
terminatePids(ProcessSignal.sigkill);
}
diff --git a/packages/flutter_tools/test/integration.shard/debug_adapter/flutter_adapter_test.dart b/packages/flutter_tools/test/integration.shard/debug_adapter/flutter_adapter_test.dart
index 9384e0e..ebcc397 100644
--- a/packages/flutter_tools/test/integration.shard/debug_adapter/flutter_adapter_test.dart
+++ b/packages/flutter_tools/test/integration.shard/debug_adapter/flutter_adapter_test.dart
@@ -561,11 +561,18 @@
dap.client.setBreakpoint(breakpointFilePath, breakpointLine),
], eagerError: true);
- // Detach.
- await dap.client.terminate();
+ // Detach and expected resume and correct output.
+ await Future.wait(<Future<void>>[
+ // We should print "Detached" instead of "Exited".
+ dap.client.outputEvents.firstWhere((OutputEventBody event) => event.output.contains('\nDetached')),
+ // We should still get terminatedEvent (this signals the DAP server terminating).
+ dap.client.event('terminated'),
+ // We should get output showing the app resumed.
+ testProcess.output.firstWhere((String output) => output.contains('topLevelFunction')),
+ // Trigger the detach.
+ dap.client.terminate(),
+ ]);
- // Ensure we get additional output (confirming the process resumed).
- await testProcess.output.first;
});
});
}