@@ -26,7 +26,8 @@ const _expectedPackagesCheckLicensesUsage = [
26
26
''' [transitive] Check for transitive dependencies.\n '''
27
27
'\n '
28
28
''' --allowed Only allow the use of certain licenses.\n '''
29
- ''' --forbidden Deny the use of certain licenses.\n '''
29
+ ' --forbidden Deny the use of certain licenses.\n '
30
+ ''' --skip-packages Skip packages from having their licenses checked.\n '''
30
31
'\n '
31
32
'Run "very_good help" to see global options.'
32
33
];
@@ -909,6 +910,78 @@ void main() {
909
910
});
910
911
});
911
912
913
+ group ('skip-packages' , () {
914
+ const skipPackagesArgument = '--skip-packages' ;
915
+
916
+ group ('skips' , () {
917
+ test (
918
+ 'a single package by name' ,
919
+ withRunner (
920
+ (commandRunner, logger, pubUpdater, pubLicense, printLogs) async {
921
+ final tempDirectory = Directory .systemTemp.createTempSync ();
922
+ addTearDown (() => tempDirectory.deleteSync (recursive: true ));
923
+
924
+ File (path.join (tempDirectory.path, pubspecLockBasename))
925
+ .writeAsStringSync (_validMultiplePubspecLockContent);
926
+
927
+ when (() => logger.progress (any ())).thenReturn (progress);
928
+
929
+ final result = await commandRunner.run (
930
+ [
931
+ ...commandArguments,
932
+ skipPackagesArgument,
933
+ 'cli_completion' ,
934
+ tempDirectory.path,
935
+ ],
936
+ );
937
+
938
+ verify (
939
+ () => progress.update ('Collecting licenses of 0/1 packages.' ),
940
+ ).called (1 );
941
+ verify (
942
+ () => progress.complete (
943
+ '''Retrieved 1 license from 1 package of type: MIT (1).''' ,
944
+ ),
945
+ ).called (1 );
946
+ expect (result, equals (ExitCode .success.code));
947
+ }),
948
+ );
949
+
950
+ test (
951
+ 'multiple packages by name' ,
952
+ withRunner (
953
+ (commandRunner, logger, pubUpdater, pubLicense, printLogs) async {
954
+ final tempDirectory = Directory .systemTemp.createTempSync ();
955
+ addTearDown (() => tempDirectory.deleteSync (recursive: true ));
956
+
957
+ File (path.join (tempDirectory.path, pubspecLockBasename))
958
+ .writeAsStringSync (_validMultiplePubspecLockContent);
959
+
960
+ when (() => logger.progress (any ())).thenReturn (progress);
961
+
962
+ final result = await commandRunner.run (
963
+ [
964
+ ...commandArguments,
965
+ skipPackagesArgument,
966
+ 'cli_completion' ,
967
+ skipPackagesArgument,
968
+ 'very_good_test_runner' ,
969
+ tempDirectory.path,
970
+ ],
971
+ );
972
+
973
+ final errorMessage =
974
+ '''No hosted dependencies found in ${tempDirectory .path } of type: direct-main.''' ;
975
+ verify (() => logger.err (errorMessage)).called (1 );
976
+
977
+ verify (() => progress.cancel ()).called (1 );
978
+
979
+ expect (result, equals (ExitCode .usage.code));
980
+ }),
981
+ );
982
+ });
983
+ });
984
+
912
985
group ('exits with error' , () {
913
986
test (
914
987
'when it did not find a pubspec.lock file at the target path' ,
0 commit comments