@@ -657,6 +657,73 @@ void main() {
657
657
verifyNever (() => process.kill ());
658
658
});
659
659
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
+ );
660
727
test (
661
728
'kills process if error occurs before '
662
729
'hotreload is enabled on non-windows' , () async {
0 commit comments