@@ -657,6 +657,73 @@ void main() {
657657 verifyNever (() => process.kill ());
658658 });
659659
660+ test (
661+ 'dont kills process if a warning occurs before '
662+ 'hotreload is enabled' ,
663+ () async {
664+ const warningMessage = """
665+ lib/my_model.g.dart:53:20: Warning: Operand of null-aware operation '!' has type 'String' which excludes null.
666+ ? _value.name!
667+ ^
668+ """ ;
669+ final generatorHooks = _MockGeneratorHooks ();
670+ when (
671+ () => generatorHooks.preGen (
672+ vars: any (named: 'vars' ),
673+ workingDirectory: any (named: 'workingDirectory' ),
674+ onVarsChanged: any (named: 'onVarsChanged' ),
675+ ),
676+ ).thenAnswer ((invocation) async {
677+ (invocation.namedArguments[const Symbol ('onVarsChanged' )] as void
678+ Function (Map <String , dynamic > vars))
679+ .call (< String , dynamic > {});
680+ });
681+ when (
682+ () => generator.generate (
683+ any (),
684+ vars: any (named: 'vars' ),
685+ fileConflictResolution: FileConflictResolution .overwrite,
686+ ),
687+ ).thenAnswer ((_) async => []);
688+ when (() => generator.hooks).thenReturn (generatorHooks);
689+ when (() => process.stdout).thenAnswer ((_) => const Stream .empty ());
690+ when (() => process.stderr).thenAnswer (
691+ (_) => Stream .value (
692+ utf8.encode (warningMessage),
693+ ),
694+ );
695+ when (
696+ () => directoryWatcher.events,
697+ ).thenAnswer (
698+ (_) => Stream .value (WatchEvent (ChangeType .MODIFY , 'README.md' )),
699+ );
700+ command = DevCommand (
701+ logger: logger,
702+ ensureRuntimeCompatibility: (_) {},
703+ directoryWatcher: (_) => directoryWatcher,
704+ generator: (_) async => generator,
705+ startProcess: (
706+ String executable,
707+ List <String > arguments, {
708+ bool runInShell = false ,
709+ }) async {
710+ return process;
711+ },
712+ sigint: sigint,
713+ )..testArgResults = argResults;
714+ final exitCode = await command.run ();
715+ expect (exitCode, equals (ExitCode .success.code));
716+ verify (
717+ () => generatorHooks.preGen (
718+ vars: < String , dynamic > {'port' : '8080' },
719+ workingDirectory: any (named: 'workingDirectory' ),
720+ onVarsChanged: any (named: 'onVarsChanged' ),
721+ ),
722+ ).called (1 );
723+ verifyNever (() => process.kill ());
724+ verify (() => logger.warn (warningMessage.trim ())).called (1 );
725+ },
726+ );
660727 test (
661728 'kills process if error occurs before '
662729 'hotreload is enabled on non-windows' , () async {
0 commit comments