Merge VS Code 1.31.1 (#4283)

This commit is contained in:
Matt Irvine
2019-03-15 13:09:45 -07:00
committed by GitHub
parent 7d31575149
commit 86bac90001
1716 changed files with 53308 additions and 48375 deletions

View File

@@ -12,7 +12,6 @@ import { URI, UriComponents } from 'vs/base/common/uri';
import * as extfs from 'vs/base/node/extfs';
import { IFileMatch, IFileQuery, IPatternInfo, IRawFileMatch2, ISearchCompleteStats, ISearchQuery, ITextQuery, QueryType, resultIsMatch } from 'vs/platform/search/common/search';
import { MainContext, MainThreadSearchShape } from 'vs/workbench/api/node/extHost.protocol';
import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration';
import { ExtHostSearch } from 'vs/workbench/api/node/extHostSearch';
import { Range } from 'vs/workbench/api/node/extHostTypes';
import { extensionResultIsMatch } from 'vs/workbench/services/search/node/textSearchManager';
@@ -28,7 +27,7 @@ let mockMainThreadSearch: MockMainThreadSearch;
class MockMainThreadSearch implements MainThreadSearchShape {
lastHandle: number;
results: (UriComponents | IRawFileMatch2)[] = [];
results: Array<UriComponents | IRawFileMatch2> = [];
$registerFileSearchProvider(handle: number, scheme: string): void {
this.lastHandle = handle;
@@ -60,12 +59,6 @@ class MockMainThreadSearch implements MainThreadSearchShape {
}
}
class MockExtHostConfiguration {
getConfiguration(section?: string, resource?: URI, extensionId?: string): vscode.WorkspaceConfiguration {
return <vscode.WorkspaceConfiguration>{};
}
}
let mockExtfs: Partial<typeof extfs>;
suite('ExtHostSearch', () => {
@@ -100,7 +93,7 @@ suite('ExtHostSearch', () => {
await rpcProtocol.sync();
return {
results: (<UriComponents[]>mockMainThreadSearch.results).map(r => URI.revive(r)),
stats
stats: stats!
};
}
@@ -130,7 +123,7 @@ suite('ExtHostSearch', () => {
}
}));
return { results, stats };
return { results, stats: stats! };
}
setup(() => {
@@ -138,12 +131,11 @@ suite('ExtHostSearch', () => {
mockMainThreadSearch = new MockMainThreadSearch();
const logService = new TestLogService();
const ehConfiguration: ExtHostConfiguration = new MockExtHostConfiguration() as any;
rpcProtocol.set(MainContext.MainThreadSearch, mockMainThreadSearch);
mockExtfs = {};
extHostSearch = new ExtHostSearch(rpcProtocol, null, logService, ehConfiguration, mockExtfs as typeof extfs);
extHostSearch = new ExtHostSearch(rpcProtocol, null!, logService, mockExtfs as typeof extfs);
});
teardown(() => {
@@ -179,8 +171,8 @@ suite('ExtHostSearch', () => {
test('no results', async () => {
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
return Promise.resolve(null);
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
return Promise.resolve(null!);
}
});
@@ -197,7 +189,7 @@ suite('ExtHostSearch', () => {
];
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
return Promise.resolve(reportedResults);
}
});
@@ -211,7 +203,7 @@ suite('ExtHostSearch', () => {
test('Search canceled', async () => {
let cancelRequested = false;
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
return new Promise((resolve, reject) => {
token.onCancellationRequested(() => {
cancelRequested = true;
@@ -229,8 +221,8 @@ suite('ExtHostSearch', () => {
test('provider returns null', async () => {
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
return null;
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
return null!;
}
});
@@ -244,9 +236,9 @@ suite('ExtHostSearch', () => {
test('all provider calls get global include/excludes', async () => {
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
assert(options.excludes.length === 2 && options.includes.length === 2, 'Missing global include/excludes');
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -273,7 +265,7 @@ suite('ExtHostSearch', () => {
test('global/local include/excludes combined', async () => {
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
if (options.folder.toString() === rootFolderA.toString()) {
assert.deepEqual(options.includes.sort(), ['*.ts', 'foo']);
assert.deepEqual(options.excludes.sort(), ['*.js', 'bar']);
@@ -282,7 +274,7 @@ suite('ExtHostSearch', () => {
assert.deepEqual(options.excludes.sort(), ['*.js']);
}
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -315,11 +307,11 @@ suite('ExtHostSearch', () => {
test('include/excludes resolved correctly', async () => {
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
assert.deepEqual(options.includes.sort(), ['*.jsx', '*.ts']);
assert.deepEqual(options.excludes.sort(), []);
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -358,7 +350,7 @@ suite('ExtHostSearch', () => {
];
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
return Promise.resolve(reportedResults
.map(relativePath => joinPath(options.folder, relativePath)));
}
@@ -389,7 +381,7 @@ suite('ExtHostSearch', () => {
test('multiroot sibling exclude clause', async () => {
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
let reportedResults: URI[];
if (options.folder.fsPath === rootFolderA.fsPath) {
reportedResults = [
@@ -459,7 +451,7 @@ suite('ExtHostSearch', () => {
let wasCanceled = false;
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
token.onCancellationRequested(() => wasCanceled = true);
return Promise.resolve(reportedResults);
@@ -495,7 +487,7 @@ suite('ExtHostSearch', () => {
let wasCanceled = false;
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
token.onCancellationRequested(() => wasCanceled = true);
return Promise.resolve(reportedResults);
@@ -530,7 +522,7 @@ suite('ExtHostSearch', () => {
let wasCanceled = false;
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
token.onCancellationRequested(() => wasCanceled = true);
return Promise.resolve(reportedResults);
@@ -603,7 +595,7 @@ suite('ExtHostSearch', () => {
];
await registerTestFileSearchProvider({
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Thenable<URI[]> {
provideFileSearchResults(query: vscode.FileSearchQuery, options: vscode.FileSearchOptions, token: vscode.CancellationToken): Promise<URI[]> {
return Promise.resolve(reportedResults);
}
}, fancyScheme);
@@ -627,7 +619,7 @@ suite('ExtHostSearch', () => {
function makePreview(text: string): vscode.TextSearchMatch['preview'] {
return {
matches: new Range(0, 0, 0, text.length),
matches: [new Range(0, 0, 0, text.length)],
text
};
}
@@ -635,7 +627,7 @@ suite('ExtHostSearch', () => {
function makeTextResult(baseFolder: URI, relativePath: string): vscode.TextSearchMatch {
return {
preview: makePreview('foo'),
ranges: new Range(0, 0, 0, 3),
ranges: [new Range(0, 0, 0, 3)],
uri: joinPath(baseFolder, relativePath)
};
}
@@ -661,7 +653,7 @@ suite('ExtHostSearch', () => {
const actualTextSearchResults: vscode.TextSearchResult[] = [];
for (let fileMatch of actual) {
// Make relative
for (let lineResult of fileMatch.results) {
for (let lineResult of fileMatch.results!) {
if (resultIsMatch(lineResult)) {
actualTextSearchResults.push({
preview: {
@@ -714,8 +706,8 @@ suite('ExtHostSearch', () => {
test('no results', async () => {
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
return Promise.resolve(null);
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
return Promise.resolve(null!);
}
});
@@ -731,9 +723,9 @@ suite('ExtHostSearch', () => {
];
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -744,10 +736,10 @@ suite('ExtHostSearch', () => {
test('all provider calls get global include/excludes', async () => {
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
assert.equal(options.includes.length, 1);
assert.equal(options.excludes.length, 1);
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -774,7 +766,7 @@ suite('ExtHostSearch', () => {
test('global/local include/excludes combined', async () => {
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
if (options.folder.toString() === rootFolderA.toString()) {
assert.deepEqual(options.includes.sort(), ['*.ts', 'foo']);
assert.deepEqual(options.excludes.sort(), ['*.js', 'bar']);
@@ -783,7 +775,7 @@ suite('ExtHostSearch', () => {
assert.deepEqual(options.excludes.sort(), ['*.js']);
}
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -816,11 +808,11 @@ suite('ExtHostSearch', () => {
test('include/excludes resolved correctly', async () => {
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
assert.deepEqual(options.includes.sort(), ['*.jsx', '*.ts']);
assert.deepEqual(options.excludes.sort(), []);
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -854,7 +846,7 @@ suite('ExtHostSearch', () => {
test('provider fail', async () => {
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
throw new Error('Provider fail');
}
});
@@ -870,12 +862,12 @@ suite('ExtHostSearch', () => {
test('basic sibling clause', async () => {
mockExtfs.readdir = (_path: string, callback: (error: Error, files: string[]) => void) => {
if (_path === rootFolderA.fsPath) {
callback(null, [
callback(null!, [
'file1.js',
'file1.ts'
]);
} else {
callback(new Error('Wrong path'), null);
callback(new Error('Wrong path'), null!);
}
};
@@ -885,9 +877,9 @@ suite('ExtHostSearch', () => {
];
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -913,24 +905,24 @@ suite('ExtHostSearch', () => {
test('multiroot sibling clause', async () => {
mockExtfs.readdir = (_path: string, callback: (error: Error, files: string[]) => void) => {
if (_path === joinPath(rootFolderA, 'folder').fsPath) {
callback(null, [
callback(null!, [
'fileA.scss',
'fileA.css',
'file2.css'
]);
} else if (_path === rootFolderB.fsPath) {
callback(null, [
callback(null!, [
'fileB.ts',
'fileB.js',
'file3.js'
]);
} else {
callback(new Error('Wrong path'), null);
callback(new Error('Wrong path'), null!);
}
};
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
let reportedResults;
if (options.folder.fsPath === rootFolderA.fsPath) {
reportedResults = [
@@ -947,7 +939,7 @@ suite('ExtHostSearch', () => {
}
reportedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -995,9 +987,9 @@ suite('ExtHostSearch', () => {
];
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -1026,10 +1018,10 @@ suite('ExtHostSearch', () => {
let wasCanceled = false;
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
token.onCancellationRequested(() => wasCanceled = true);
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -1059,10 +1051,10 @@ suite('ExtHostSearch', () => {
let wasCanceled = false;
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
token.onCancellationRequested(() => wasCanceled = true);
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -1091,10 +1083,10 @@ suite('ExtHostSearch', () => {
let wasCanceled = false;
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
token.onCancellationRequested(() => wasCanceled = true);
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
});
@@ -1123,7 +1115,7 @@ suite('ExtHostSearch', () => {
];
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
providedResults.forEach(r => progress.report(r));
return Promise.resolve({ limitHit: true });
}
@@ -1156,7 +1148,7 @@ suite('ExtHostSearch', () => {
'file2.ts',
'file3.ts',
].forEach(f => progress.report(makeTextResult(options.folder, f)));
return null;
return null!;
}
});
@@ -1185,9 +1177,9 @@ suite('ExtHostSearch', () => {
];
await registerTestTextSearchProvider({
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Thenable<vscode.TextSearchComplete> {
provideTextSearchResults(query: vscode.TextSearchQuery, options: vscode.TextSearchOptions, progress: vscode.Progress<vscode.TextSearchResult>, token: vscode.CancellationToken): Promise<vscode.TextSearchComplete> {
providedResults.forEach(r => progress.report(r));
return Promise.resolve(null);
return Promise.resolve(null!);
}
}, fancyScheme);