@@ -688,7 +688,7 @@ suite('ExtHostSearch', () => {
688688
689689 test ( 'no results' , async ( ) => {
690690 await registerTestTextSearchProvider ( {
691- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
691+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
692692 return TPromise . wrap ( null ) ;
693693 }
694694 } ) ;
@@ -705,7 +705,7 @@ suite('ExtHostSearch', () => {
705705 ] ;
706706
707707 await registerTestTextSearchProvider ( {
708- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
708+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
709709 providedResults . forEach ( r => progress . report ( r ) ) ;
710710 return TPromise . wrap ( null ) ;
711711 }
@@ -718,7 +718,7 @@ suite('ExtHostSearch', () => {
718718
719719 test ( 'all provider calls get global include/excludes' , async ( ) => {
720720 await registerTestTextSearchProvider ( {
721- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
721+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
722722 assert . equal ( options . includes . length , 1 ) ;
723723 assert . equal ( options . excludes . length , 1 ) ;
724724 return TPromise . wrap ( null ) ;
@@ -747,7 +747,7 @@ suite('ExtHostSearch', () => {
747747
748748 test ( 'global/local include/excludes combined' , async ( ) => {
749749 await registerTestTextSearchProvider ( {
750- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
750+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
751751 if ( options . folder . toString ( ) === rootFolderA . toString ( ) ) {
752752 assert . deepEqual ( options . includes . sort ( ) , [ '*.ts' , 'foo' ] ) ;
753753 assert . deepEqual ( options . excludes . sort ( ) , [ '*.js' , 'bar' ] ) ;
@@ -788,7 +788,7 @@ suite('ExtHostSearch', () => {
788788
789789 test ( 'include/excludes resolved correctly' , async ( ) => {
790790 await registerTestTextSearchProvider ( {
791- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
791+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
792792 assert . deepEqual ( options . includes . sort ( ) , [ '*.jsx' , '*.ts' ] ) ;
793793 assert . deepEqual ( options . excludes . sort ( ) , [ ] ) ;
794794
@@ -825,7 +825,7 @@ suite('ExtHostSearch', () => {
825825
826826 test ( 'provider fail' , async ( ) => {
827827 await registerTestTextSearchProvider ( {
828- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
828+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
829829 throw new Error ( 'Provider fail' ) ;
830830 }
831831 } ) ;
@@ -856,7 +856,7 @@ suite('ExtHostSearch', () => {
856856 ] ;
857857
858858 await registerTestTextSearchProvider ( {
859- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
859+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
860860 providedResults . forEach ( r => progress . report ( r ) ) ;
861861 return TPromise . wrap ( null ) ;
862862 }
@@ -900,7 +900,7 @@ suite('ExtHostSearch', () => {
900900 } ;
901901
902902 await registerTestTextSearchProvider ( {
903- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
903+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
904904 let reportedResults ;
905905 if ( options . folder . fsPath === rootFolderA . fsPath ) {
906906 reportedResults = [
@@ -964,7 +964,7 @@ suite('ExtHostSearch', () => {
964964 ] ;
965965
966966 await registerTestTextSearchProvider ( {
967- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
967+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
968968 providedResults . forEach ( r => progress . report ( r ) ) ;
969969 return TPromise . wrap ( null ) ;
970970 }
@@ -994,7 +994,7 @@ suite('ExtHostSearch', () => {
994994
995995 let wasCanceled = false ;
996996 await registerTestTextSearchProvider ( {
997- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
997+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
998998 token . onCancellationRequested ( ( ) => wasCanceled = true ) ;
999999 providedResults . forEach ( r => progress . report ( r ) ) ;
10001000 return TPromise . wrap ( null ) ;
@@ -1026,7 +1026,7 @@ suite('ExtHostSearch', () => {
10261026
10271027 let wasCanceled = false ;
10281028 await registerTestTextSearchProvider ( {
1029- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
1029+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
10301030 token . onCancellationRequested ( ( ) => wasCanceled = true ) ;
10311031 providedResults . forEach ( r => progress . report ( r ) ) ;
10321032 return TPromise . wrap ( null ) ;
@@ -1057,7 +1057,7 @@ suite('ExtHostSearch', () => {
10571057
10581058 let wasCanceled = false ;
10591059 await registerTestTextSearchProvider ( {
1060- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
1060+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
10611061 token . onCancellationRequested ( ( ) => wasCanceled = true ) ;
10621062 providedResults . forEach ( r => progress . report ( r ) ) ;
10631063 return TPromise . wrap ( null ) ;
@@ -1080,10 +1080,39 @@ suite('ExtHostSearch', () => {
10801080 assert ( ! wasCanceled , 'Expected not to be canceled' ) ;
10811081 } ) ;
10821082
1083+ test ( 'provider returns early with limitHit' , async ( ) => {
1084+ const providedResults : vscode . TextSearchResult [ ] = [
1085+ makeTextResult ( rootFolderA , 'file1.ts' ) ,
1086+ makeTextResult ( rootFolderA , 'file2.ts' ) ,
1087+ makeTextResult ( rootFolderA , 'file3.ts' )
1088+ ] ;
1089+
1090+ await registerTestTextSearchProvider ( {
1091+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
1092+ providedResults . forEach ( r => progress . report ( r ) ) ;
1093+ return TPromise . wrap ( { limitHit : true } ) ;
1094+ }
1095+ } ) ;
1096+
1097+ const query : ISearchQuery = {
1098+ type : QueryType . Text ,
1099+
1100+ maxResults : 1000 ,
1101+
1102+ folderQueries : [
1103+ { folder : rootFolderA }
1104+ ]
1105+ } ;
1106+
1107+ const { results, stats } = await runTextSearch ( getPattern ( 'foo' ) , query ) ;
1108+ assert ( stats . limitHit , 'Expected to return limitHit' ) ;
1109+ assertResults ( results , providedResults ) ;
1110+ } ) ;
1111+
10831112 test ( 'multiroot max results' , async ( ) => {
10841113 let cancels = 0 ;
10851114 await registerTestTextSearchProvider ( {
1086- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
1115+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
10871116 token . onCancellationRequested ( ( ) => cancels ++ ) ;
10881117 return new TPromise ( r => process . nextTick ( r ) )
10891118 . then ( ( ) => {
@@ -1092,6 +1121,8 @@ suite('ExtHostSearch', () => {
10921121 'file2.ts' ,
10931122 'file3.ts' ,
10941123 ] . forEach ( f => progress . report ( makeTextResult ( options . folder , f ) ) ) ;
1124+
1125+ return null ;
10951126 } ) ;
10961127 }
10971128 } ) ;
@@ -1120,7 +1151,7 @@ suite('ExtHostSearch', () => {
11201151 ] ;
11211152
11221153 await registerTestTextSearchProvider ( {
1123- provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < void > {
1154+ provideTextSearchResults ( query : vscode . TextSearchQuery , options : vscode . TextSearchOptions , progress : vscode . Progress < vscode . TextSearchResult > , token : vscode . CancellationToken ) : Thenable < vscode . TextSearchComplete > {
11241155 providedResults . forEach ( r => progress . report ( r ) ) ;
11251156 return TPromise . wrap ( null ) ;
11261157 }
0 commit comments