Skip to content

Commit 557df6e

Browse files
committed
Tests for microsoft#55790
1 parent b0e32cc commit 557df6e

1 file changed

Lines changed: 45 additions & 14 deletions

File tree

src/vs/workbench/test/electron-browser/api/extHostSearch.test.ts

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)