@@ -466,5 +466,122 @@ dev_dependencies:
466466 ]),
467467 );
468468 });
469+
470+ test ('regenerates mocks when updating mockito if necessary' , () async {
471+ final RepositoryPackage package =
472+ createFakePackage ('a_package' , packagesDir);
473+ addDependency (package, 'mockito' , version: '1.0.0' );
474+ addDevDependency (package, 'build_runner' );
475+
476+ await runCapturingPrint (runner, < String > [
477+ 'update-dependency' ,
478+ '--pub-package' ,
479+ 'mockito' ,
480+ '--version' ,
481+ '1.5.0' ,
482+ ]);
483+
484+ expect (
485+ processRunner.recordedCalls,
486+ orderedEquals (< ProcessCall > [
487+ ProcessCall (
488+ 'dart' ,
489+ const < String > ['pub' , 'get' ],
490+ package.path,
491+ ),
492+ ProcessCall (
493+ 'dart' ,
494+ const < String > [
495+ 'run' ,
496+ 'build_runner' ,
497+ 'build' ,
498+ '--delete-conflicting-outputs'
499+ ],
500+ package.path,
501+ ),
502+ ]),
503+ );
504+ });
505+
506+ test ('skips regenerating mocks when there is no build_runner dependency' ,
507+ () async {
508+ final RepositoryPackage package =
509+ createFakePackage ('a_package' , packagesDir);
510+ addDependency (package, 'mockito' , version: '1.0.0' );
511+
512+ await runCapturingPrint (runner, < String > [
513+ 'update-dependency' ,
514+ '--pub-package' ,
515+ 'mockito' ,
516+ '--version' ,
517+ '1.5.0' ,
518+ ]);
519+
520+ expect (processRunner.recordedCalls.isEmpty, true );
521+ });
522+
523+ test ('updating mockito fails if pub get fails' , () async {
524+ final RepositoryPackage package =
525+ createFakePackage ('a_package' , packagesDir);
526+ addDependency (package, 'mockito' , version: '1.0.0' );
527+ addDevDependency (package, 'build_runner' );
528+
529+ processRunner.mockProcessesForExecutable['dart' ] = < FakeProcessInfo > [
530+ FakeProcessInfo (MockProcess (exitCode: 1 ), < String > ['pub' , 'get' ])
531+ ];
532+
533+ Error ? commandError;
534+ final List <String > output = await runCapturingPrint (runner, < String > [
535+ 'update-dependency' ,
536+ '--pub-package' ,
537+ 'mockito' ,
538+ '--version' ,
539+ '1.5.0' ,
540+ ], errorHandler: (Error e) {
541+ commandError = e;
542+ });
543+
544+ expect (commandError, isA <ToolExit >());
545+ expect (
546+ output,
547+ containsAllInOrder (< Matcher > [
548+ contains ('dart pub get failed' ),
549+ contains ('Failed to update mocks' ),
550+ ]),
551+ );
552+ });
553+
554+ test ('updating mockito fails if running build_runner fails' , () async {
555+ final RepositoryPackage package =
556+ createFakePackage ('a_package' , packagesDir);
557+ addDependency (package, 'mockito' , version: '1.0.0' );
558+ addDevDependency (package, 'build_runner' );
559+
560+ processRunner.mockProcessesForExecutable['dart' ] = < FakeProcessInfo > [
561+ FakeProcessInfo (MockProcess (), < String > ['pub' , 'get' ]),
562+ FakeProcessInfo (
563+ MockProcess (exitCode: 1 ), < String > ['run' , 'build_runner' ]),
564+ ];
565+
566+ Error ? commandError;
567+ final List <String > output = await runCapturingPrint (runner, < String > [
568+ 'update-dependency' ,
569+ '--pub-package' ,
570+ 'mockito' ,
571+ '--version' ,
572+ '1.5.0' ,
573+ ], errorHandler: (Error e) {
574+ commandError = e;
575+ });
576+
577+ expect (commandError, isA <ToolExit >());
578+ expect (
579+ output,
580+ containsAllInOrder (< Matcher > [
581+ contains ('"dart run build_runner build" failed' ),
582+ contains ('Failed to update mocks' ),
583+ ]),
584+ );
585+ });
469586 });
470587}
0 commit comments