Skip to content

Commit

Permalink
Fix up search integration tests - #27226
Browse files Browse the repository at this point in the history
  • Loading branch information
roblourens committed Jul 17, 2017
1 parent a322986 commit d8997bd
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 87 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Conway
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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();

Expand Down Expand Up @@ -86,136 +93,105 @@ 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 }
};

doSearchTest(config, 4, done);
});

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 }
};

doSearchTest(config, 4, done);
});

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 }
};

doSearchTest(config, 4, done);
});

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 }
};

doSearchTest(config, 1, done);
});

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 }
};

doSearchTest(config, 1, done);
});

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 }
};

doSearchTest(config, 394, done);
});

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 }
};

doSearchTest(config, 382, done);
});

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 }
};
Expand All @@ -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
};

Expand All @@ -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));
}

0 comments on commit d8997bd

Please sign in to comment.