@@ -9,7 +9,9 @@ import 'package:flutter_tools/src/base/io.dart';
99import 'package:flutter_tools/src/base/logger.dart' ;
1010import 'package:flutter_tools/src/base/terminal.dart' ;
1111import 'package:flutter_tools/src/base/user_messages.dart' ;
12+ import 'package:flutter_tools/src/base/utils.dart' ;
1213import 'package:flutter_tools/src/build_info.dart' ;
14+ import 'package:flutter_tools/src/convert.dart' ;
1315import 'package:flutter_tools/src/device.dart' ;
1416import 'package:flutter_tools/src/project.dart' ;
1517import 'package:test/fake.dart' ;
@@ -508,6 +510,29 @@ void main() {
508510 expect (computeDartVmFlags (DebuggingOptions .enabled (BuildInfo .debug, nullAssertions: true )), '--null_assertions' );
509511 expect (computeDartVmFlags (DebuggingOptions .enabled (BuildInfo .debug, dartFlags: '--foo' , nullAssertions: true )), '--foo,--null_assertions' );
510512 });
513+
514+ group ('JSON encode DebuggingOptions' , () {
515+ testWithoutContext ('can preserve the original options' , () {
516+ final DebuggingOptions original = DebuggingOptions .enabled (
517+ BuildInfo .debug,
518+ startPaused: true ,
519+ disableServiceAuthCodes: true ,
520+ enableDds: false ,
521+ dartEntrypointArgs: < String > ['a' , 'b' ],
522+ dartFlags: 'c' ,
523+ deviceVmServicePort: 1234 ,
524+ );
525+ final String jsonString = json.encode (original.toJson ());
526+ final Map <String , dynamic > decoded = castStringKeyedMap (json.decode (jsonString))! ;
527+ final DebuggingOptions deserialized = DebuggingOptions .fromJson (decoded, BuildInfo .debug);
528+ expect (deserialized.startPaused, original.startPaused);
529+ expect (deserialized.disableServiceAuthCodes, original.disableServiceAuthCodes);
530+ expect (deserialized.enableDds, original.enableDds);
531+ expect (deserialized.dartEntrypointArgs, original.dartEntrypointArgs);
532+ expect (deserialized.dartFlags, original.dartFlags);
533+ expect (deserialized.deviceVmServicePort, original.deviceVmServicePort);
534+ });
535+ });
511536}
512537
513538class TestDeviceManager extends DeviceManager {
0 commit comments