Fix up search integration tests - #27226

This commit is contained in:
Rob Lourens
2017-07-17 13:27:58 -07:00
parent a322986bb5
commit d8997bde72
2 changed files with 100 additions and 87 deletions
@@ -0,0 +1 @@
Conway
@@ -8,6 +8,7 @@
import path = require('path');
import assert = require('assert');
import * as glob from 'vs/base/common/glob';
import { TPromise } from 'vs/base/common/winjs.base';
import { FileWalker } from 'vs/workbench/services/search/node/fileSearch';
import { ISerializedFileMatch, IRawSearch, IFolderSearch } from 'vs/workbench/services/search/node/search';
@@ -19,12 +20,18 @@ function countAll(matches: ISerializedFileMatch[]): number {
return matches.reduce((acc, m) => acc + m.numMatches, 0);
}
const TEST_ROOT_FOLDER = path.normalize(require.toUrl('./fixtures'));
function rootFolderQueries(): IFolderSearch[] {
return [
{ folder: TEST_ROOT_FOLDER }
];
}
const TEST_FIXTURES = path.normalize(require.toUrl('./fixtures'));
const EXAMPLES_FIXTURES = path.join(TEST_FIXTURES, 'examples');
const MORE_FIXTURES = path.join(TEST_FIXTURES, 'more');
const TEST_ROOT_FOLDER: IFolderSearch = { folder: TEST_FIXTURES };
const ROOT_FOLDER_QUERY: IFolderSearch[] = [
TEST_ROOT_FOLDER
];
const MULTIROOT_QUERIES: IFolderSearch[] = [
{ folder: EXAMPLES_FIXTURES },
{ folder: MORE_FIXTURES }
];
const textSearchWorkerProvider = new TextSearchWorkerProvider();
@@ -86,25 +93,21 @@ function doSearchTest(config: IRawSearch, expectedResultCount: number, done) {
.then(done, done);
}
suite('Search-integration', () => {
test('Text: GameOfLife', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
suite('Search-integration', function () {
this.timeout(1000 * 60); // increase timeout for this suite
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.js',
contentPattern: { pattern: 'GameOfLife', modifiers: 'i' },
test('Text: GameOfLife', function (done: () => void) {
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'GameOfLife' },
};
doSearchTest(config, 4, done);
});
test('Text: GameOfLife (RegExp)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.js',
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'Game.?fL\\w?fe', isRegExp: true }
};
@@ -112,11 +115,8 @@ suite('Search-integration', () => {
});
test('Text: GameOfLife (RegExp to EOL)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.js',
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'GameOfLife.*', isRegExp: true }
};
@@ -124,11 +124,8 @@ suite('Search-integration', () => {
});
test('Text: GameOfLife (Word Match, Case Sensitive)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.js',
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'GameOfLife', isWordMatch: true, isCaseSensitive: true }
};
@@ -136,11 +133,8 @@ suite('Search-integration', () => {
});
test('Text: GameOfLife (Word Match, Spaces)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.js',
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: ' GameOfLife ', isWordMatch: true }
};
@@ -148,11 +142,8 @@ suite('Search-integration', () => {
});
test('Text: GameOfLife (Word Match, Punctuation and Spaces)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.js',
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: ', as =', isWordMatch: true }
};
@@ -160,36 +151,27 @@ suite('Search-integration', () => {
});
test('Text: Helvetica (UTF 16)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.css',
contentPattern: { pattern: 'Helvetica', modifiers: 'i' }
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'Helvetica' }
};
doSearchTest(config, 3, done);
});
test('Text: e', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.*',
contentPattern: { pattern: 'e', modifiers: 'i' }
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'e' }
};
doSearchTest(config, 776, done);
});
test('Text: e (with excludes)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config: any = {
folderQueries: rootFolderQueries(),
filePattern: '*.*',
contentPattern: { pattern: 'e', modifiers: 'i' },
const config: any = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'e' },
excludePattern: { '**/examples': true }
};
@@ -197,12 +179,9 @@ suite('Search-integration', () => {
});
test('Text: e (with includes)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config: any = {
folderQueries: rootFolderQueries(),
filePattern: '*.*',
contentPattern: { pattern: 'e', modifiers: 'i' },
const config: any = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'e' },
includePattern: { '**/examples/**': true }
};
@@ -210,12 +189,9 @@ suite('Search-integration', () => {
});
test('Text: e (with includes and exclude)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config: any = {
folderQueries: rootFolderQueries(),
filePattern: '*.*',
contentPattern: { pattern: 'e', modifiers: 'i' },
const config: any = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'e' },
includePattern: { '**/examples/**': true },
excludePattern: { '**/examples/small.js': true }
};
@@ -224,13 +200,10 @@ suite('Search-integration', () => {
});
test('Text: a (capped)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
const maxResults = 520;
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.*',
contentPattern: { pattern: 'a', modifiers: 'i' },
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'a' },
maxResults
};
@@ -242,26 +215,65 @@ suite('Search-integration', () => {
});
test('Text: a (no results)', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.*',
contentPattern: { pattern: 'ahsogehtdas', modifiers: 'i' }
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: 'ahsogehtdas' }
};
doSearchTest(config, 0, done);
});
test('Text: -size', function (done: () => void) {
this.timeout(1000 * 60); // increase timeout for this one test
let config = {
folderQueries: rootFolderQueries(),
filePattern: '*.css',
contentPattern: { pattern: '-size', modifiers: 'i' }
const config = {
folderQueries: ROOT_FOLDER_QUERY,
contentPattern: { pattern: '-size' }
};
doSearchTest(config, 9, done);
});
});
test('Multiroot: Conway', function (done: () => void) {
const config: IRawSearch = {
folderQueries: MULTIROOT_QUERIES,
contentPattern: { pattern: 'conway' }
};
doSearchTest(config, 8, done);
});
test('Multiroot: e with partial global exclude', function (done: () => void) {
const config: IRawSearch = {
folderQueries: MULTIROOT_QUERIES,
contentPattern: { pattern: 'e' },
excludePattern: makeExpression('**/*.txt')
};
doSearchTest(config, 382, done);
});
test('Multiroot: e with global excludes', function (done: () => void) {
const config: IRawSearch = {
folderQueries: MULTIROOT_QUERIES,
contentPattern: { pattern: 'e' },
excludePattern: makeExpression('**/*.txt', '**/*.js')
};
doSearchTest(config, 0, done);
});
test('Multiroot: e with folder exclude', function (done: () => void) {
const config: IRawSearch = {
folderQueries: [
{ folder: EXAMPLES_FIXTURES, excludePattern: makeExpression('**/e*.js') },
{ folder: MORE_FIXTURES }
],
contentPattern: { pattern: 'e' }
};
doSearchTest(config, 286, done);
});
});
function makeExpression(...patterns: string[]): glob.IExpression {
return patterns.reduce((glob, cur) => { glob[cur] = true; return glob; }, Object.create(null));
}