@@ -16,12 +16,13 @@ void main() {
16
16
late MockPlatform mockPlatform;
17
17
late Directory packagesDir;
18
18
late RecordingProcessRunner processRunner;
19
+ late RecordingProcessRunner gitProcessRunner;
19
20
late CommandRunner <void > runner;
20
21
21
22
setUp (() {
22
23
mockPlatform = MockPlatform ();
23
24
final GitDir gitDir;
24
- (: packagesDir, : processRunner, gitProcessRunner : _ , : gitDir) =
25
+ (: packagesDir, : processRunner, : gitProcessRunner , : gitDir) =
25
26
configureBaseCommandMocks (platform: mockPlatform);
26
27
final AnalyzeCommand analyzeCommand = AnalyzeCommand (
27
28
packagesDir,
@@ -470,4 +471,90 @@ void main() {
470
471
]),
471
472
);
472
473
});
474
+
475
+ group ('file filtering' , () {
476
+ test ('runs command for changes to Dart source' , () async {
477
+ createFakePackage ('package_a' , packagesDir);
478
+
479
+ gitProcessRunner.mockProcessesForExecutable['git-diff' ] =
480
+ < FakeProcessInfo > [
481
+ FakeProcessInfo (MockProcess (stdout: '''
482
+ packages/package_a/foo.dart
483
+ ''' )),
484
+ ];
485
+
486
+ final List <String > output =
487
+ await runCapturingPrint (runner, < String > ['analyze' ]);
488
+
489
+ expect (
490
+ output,
491
+ containsAllInOrder (< Matcher > [
492
+ contains ('Running for package_a' ),
493
+ ]));
494
+ });
495
+
496
+ const List <String > files = < String > [
497
+ 'foo.java' ,
498
+ 'foo.kt' ,
499
+ 'foo.m' ,
500
+ 'foo.swift' ,
501
+ 'foo.c' ,
502
+ 'foo.cc' ,
503
+ 'foo.cpp' ,
504
+ 'foo.h' ,
505
+ ];
506
+ for (final String file in files) {
507
+ test ('skips command for changes to non-Dart source $file ' , () async {
508
+ createFakePackage ('package_a' , packagesDir);
509
+
510
+ gitProcessRunner.mockProcessesForExecutable['git-diff' ] =
511
+ < FakeProcessInfo > [
512
+ FakeProcessInfo (MockProcess (stdout: '''
513
+ packages/package_a/$file
514
+ ''' )),
515
+ ];
516
+
517
+ final List <String > output =
518
+ await runCapturingPrint (runner, < String > ['analyze' ]);
519
+
520
+ expect (
521
+ output,
522
+ isNot (containsAllInOrder (< Matcher > [
523
+ contains ('Running for package_a' ),
524
+ ])));
525
+ expect (
526
+ output,
527
+ containsAllInOrder (< Matcher > [
528
+ contains ('SKIPPING ALL PACKAGES' ),
529
+ ]));
530
+ });
531
+ }
532
+
533
+ test ('skips commands if all files should be ignored' , () async {
534
+ createFakePackage ('package_a' , packagesDir);
535
+
536
+ gitProcessRunner.mockProcessesForExecutable['git-diff' ] =
537
+ < FakeProcessInfo > [
538
+ FakeProcessInfo (MockProcess (stdout: '''
539
+ README.md
540
+ CODEOWNERS
541
+ packages/package_a/CHANGELOG.md
542
+ ''' )),
543
+ ];
544
+
545
+ final List <String > output =
546
+ await runCapturingPrint (runner, < String > ['analyze' ]);
547
+
548
+ expect (
549
+ output,
550
+ isNot (containsAllInOrder (< Matcher > [
551
+ contains ('Running for package_a' ),
552
+ ])));
553
+ expect (
554
+ output,
555
+ containsAllInOrder (< Matcher > [
556
+ contains ('SKIPPING ALL PACKAGES' ),
557
+ ]));
558
+ });
559
+ });
473
560
}
0 commit comments