EH search - File search tests and fixes

This commit is contained in:
Rob Lourens
2018-05-11 20:03:26 -07:00
parent 03b76b2e8e
commit 3bc1b42ad7
2 changed files with 213 additions and 44 deletions

View File

@@ -83,15 +83,8 @@ export class ExtHostSearch implements ExtHostSearchShape {
return TPromise.as(undefined);
}
const includes: string[] = query.includePattern ? Object.keys(query.includePattern) : [];
if (folderQuery.includePattern) {
includes.push(...Object.keys(folderQuery.includePattern));
}
const excludes: string[] = query.excludePattern ? Object.keys(query.excludePattern) : [];
if (folderQuery.excludePattern) {
excludes.push(...Object.keys(folderQuery.excludePattern));
}
const includes = resolvePatternsForProvider(query.includePattern, folderQuery.includePattern);
const excludes = resolvePatternsForProvider(query.excludePattern, folderQuery.excludePattern);
const searchOptions: vscode.TextSearchOptions = {
folder: URI.from(folderQuery.folder),
@@ -113,6 +106,23 @@ export class ExtHostSearch implements ExtHostSearchShape {
}
}
/**
* TODO@roblou
* Discards sibling clauses (for now) and 'false' patterns
*/
function resolvePatternsForProvider(globalPattern: glob.IExpression, folderPattern: glob.IExpression): string[] {
const merged = {
...(globalPattern || {}),
...(folderPattern || {})
};
return Object.keys(merged)
.filter(key => {
const value = merged[key];
return typeof value === 'boolean' && value;
});
}
function reviveQuery(rawQuery: IRawSearchQuery): ISearchQuery {
return {
...rawQuery,
@@ -402,10 +412,6 @@ class FileSearchEngine {
.map(err => toErrorMessage(err))
.filter(msg => !!msg)[0];
if (errMsg) {
console.error(errMsg);
}
reject(new Error(errMsg));
});
});
@@ -493,15 +499,8 @@ class FileSearchEngine {
}
private getSearchOptionsForFolder(fq: IFolderQuery<URI>): vscode.FileSearchOptions {
const includes: string[] = this.config.includePattern ? Object.keys(this.config.includePattern) : [];
if (fq.includePattern) {
includes.push(...Object.keys(fq.includePattern));
}
const excludes: string[] = this.config.excludePattern ? Object.keys(this.config.excludePattern) : [];
if (fq.excludePattern) {
excludes.push(...Object.keys(fq.excludePattern));
}
const includes = resolvePatternsForProvider(this.config.includePattern, fq.includePattern);
const excludes = resolvePatternsForProvider(this.config.excludePattern, fq.excludePattern);
return {
folder: fq.folder,