mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-24 00:05:46 +01:00
Fix up search integration tests - #27226
This commit is contained in:
@@ -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));
|
||||
}
|
||||
Reference in New Issue
Block a user