From 7dab997d39f1becea56c85c1520cf119b14818ea Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 08:45:14 -0700 Subject: [PATCH 1/9] added logging --- src/client/workspaceSymbols/parser.ts | 7 ++ src/client/workspaceSymbols/provider.ts | 6 + src/test/index.ts | 4 +- src/test/workspaceSymbols/multiroot.test.ts | 120 ++++++++++---------- 4 files changed, 75 insertions(+), 62 deletions(-) diff --git a/src/client/workspaceSymbols/parser.ts b/src/client/workspaceSymbols/parser.ts index 7be6e51183d4..5030a0ca04d6 100644 --- a/src/client/workspaceSymbols/parser.ts +++ b/src/client/workspaceSymbols/parser.ts @@ -103,6 +103,7 @@ Object.keys(newValuesAndKeys).forEach(key => { export function parseTags(workspaceFolder: string, tagFile: string, query: string, token: vscode.CancellationToken, maxItems: number = 200): Promise { return fsExistsAsync(tagFile).then(exists => { if (!exists) { + console.log('parseTags.fsExistsAsync - not found'); return null; } @@ -137,20 +138,26 @@ export function parseTags(workspaceFolder: string, tagFile: string, query: strin }); } function parseTagsLine(workspaceFolder: string, line: string, searchPattern: string): Tag { + console.log('parseTagsLine'); + console.log(`line = ${line}`); if (IsFileRegEx.test(line)) { + console.log(`not a file`); return; } let match = matchNamedRegEx(line, LINE_REGEX); if (!match) { + console.log(`not a match`); return; } if (!fuzzy.test(searchPattern, match.name)) { + console.log(`not a fuzzy match`); return; } let file = match.file; if (!path.isAbsolute(file)) { file = path.resolve(workspaceFolder, '.vscode', file); } + console.log('Symbols found'); const symbolKind = CTagKinMapping.has(match.type) ? CTagKinMapping.get(match.type) : vscode.SymbolKind.Null; const tag: Tag = { diff --git a/src/client/workspaceSymbols/provider.ts b/src/client/workspaceSymbols/provider.ts index e9124212e9a8..1108b4d9b152 100644 --- a/src/client/workspaceSymbols/provider.ts +++ b/src/client/workspaceSymbols/provider.ts @@ -20,6 +20,8 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { const generators = await Promise.all(this.tagGenerators.map(async generator => { const tagFileExists = await fsExistsAsync(generator.tagFilePath); + console.log(`tagFileExists ${tagFileExists}`); + console.log(`tagFileExists ${generator.tagFilePath}`); return tagFileExists ? generator : undefined; })); @@ -27,8 +29,12 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { .filter(generator => generator !== undefined && generator.enabled) .map(async generator => { // load tags + console.log('parsing tags'); + console.log(`map ${generator.workspaceFolder.fsPath}`); + console.log(`map ${generator.tagFilePath}`); const items = await parseTags(generator.workspaceFolder.fsPath, generator.tagFilePath, query, token); if (!Array.isArray(items)) { + console.log('Empty Array'); return []; } return items.map(item => new vscode.SymbolInformation( diff --git a/src/test/index.ts b/src/test/index.ts index e5fe465f9647..ca53882b2f81 100644 --- a/src/test/index.ts +++ b/src/test/index.ts @@ -20,8 +20,8 @@ testRunner.configure({ ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.) useColors: true, // colored output from test results timeout: 25000, - grep : 'Multiroot', - invert + grep : 'Workspace Symbols', + // invert }); initializePython(); diff --git a/src/test/workspaceSymbols/multiroot.test.ts b/src/test/workspaceSymbols/multiroot.test.ts index 270920898526..510e9112b137 100644 --- a/src/test/workspaceSymbols/multiroot.test.ts +++ b/src/test/workspaceSymbols/multiroot.test.ts @@ -1,60 +1,60 @@ -import * as assert from 'assert'; -import * as path from 'path'; -import { CancellationTokenSource, ConfigurationTarget, Uri } from 'vscode'; -import { initialize, closeActiveWindows } from '../initialize'; -import { Generator } from '../../client/workspaceSymbols/generator'; -import { MockOutputChannel } from '../mockClasses'; -import { WorkspaceSymbolProvider } from '../../client/workspaceSymbols/provider'; -import { enableDisableWorkspaceSymbols } from './common'; -import { PythonSettings } from '../../client/common/configSettings'; - -const multirootPath = path.join(__dirname, '..', '..', '..', 'src', 'test', 'multiRootWkspc'); - -suite('Multiroot Workspace Symbols', () => { - suiteSetup(() => initialize()); - setup(() => PythonSettings.dispose()); - suiteTeardown(() => closeActiveWindows()); - teardown(async () => { - await closeActiveWindows(); - await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'parent', 'child')), false, ConfigurationTarget.WorkspaceFolder); - await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'workspace2')), false, ConfigurationTarget.WorkspaceFolder); - }); - - test(`symbols should be returned when enabeld and vice versa`, async () => { - const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); - const outputChannel = new MockOutputChannel('Output'); - - await enableDisableWorkspaceSymbols(childWorkspaceUri, false, ConfigurationTarget.WorkspaceFolder); - - let generator = new Generator(childWorkspaceUri, outputChannel); - let provider = new WorkspaceSymbolProvider([generator], outputChannel); - let symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); - assert.equal(symbols.length, 0, 'Symbols returned even when workspace symbols are turned off'); - generator.dispose(); - - await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); - - generator = new Generator(childWorkspaceUri, outputChannel); - provider = new WorkspaceSymbolProvider([generator], outputChannel); - symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); - assert.notEqual(symbols.length, 0, 'Symbols should be returned when workspace symbols are turned on'); - }); - test(`symbols should be filtered correctly`, async () => { - const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); - const workspace2Uri = Uri.file(path.join(multirootPath, 'workspace2')); - const outputChannel = new MockOutputChannel('Output'); - - await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); - await enableDisableWorkspaceSymbols(workspace2Uri, true, ConfigurationTarget.WorkspaceFolder); - - const generators = [ - new Generator(childWorkspaceUri, outputChannel), - new Generator(workspace2Uri, outputChannel)]; - const provider = new WorkspaceSymbolProvider(generators, outputChannel); - const symbols = await provider.provideWorkspaceSymbols('meth1Of', new CancellationTokenSource().token); - - assert.equal(symbols.length, 2, 'Incorrect number of symbols returned'); - assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('childFile.py')), -1, 'File with symbol not found in child workspace folder'); - assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('workspace2File.py')), -1, 'File with symbol not found in child workspace folder'); - }); -}); +// import * as assert from 'assert'; +// import * as path from 'path'; +// import { CancellationTokenSource, ConfigurationTarget, Uri } from 'vscode'; +// import { initialize, closeActiveWindows } from '../initialize'; +// import { Generator } from '../../client/workspaceSymbols/generator'; +// import { MockOutputChannel } from '../mockClasses'; +// import { WorkspaceSymbolProvider } from '../../client/workspaceSymbols/provider'; +// import { enableDisableWorkspaceSymbols } from './common'; +// import { PythonSettings } from '../../client/common/configSettings'; + +// const multirootPath = path.join(__dirname, '..', '..', '..', 'src', 'test', 'multiRootWkspc'); + +// suite('Multiroot Workspace Symbols', () => { +// suiteSetup(() => initialize()); +// setup(() => PythonSettings.dispose()); +// suiteTeardown(() => closeActiveWindows()); +// teardown(async () => { +// await closeActiveWindows(); +// await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'parent', 'child')), false, ConfigurationTarget.WorkspaceFolder); +// await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'workspace2')), false, ConfigurationTarget.WorkspaceFolder); +// }); + +// test(`symbols should be returned when enabeld and vice versa`, async () => { +// const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); +// const outputChannel = new MockOutputChannel('Output'); + +// await enableDisableWorkspaceSymbols(childWorkspaceUri, false, ConfigurationTarget.WorkspaceFolder); + +// let generator = new Generator(childWorkspaceUri, outputChannel); +// let provider = new WorkspaceSymbolProvider([generator], outputChannel); +// let symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); +// assert.equal(symbols.length, 0, 'Symbols returned even when workspace symbols are turned off'); +// generator.dispose(); + +// await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); + +// generator = new Generator(childWorkspaceUri, outputChannel); +// provider = new WorkspaceSymbolProvider([generator], outputChannel); +// symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); +// assert.notEqual(symbols.length, 0, 'Symbols should be returned when workspace symbols are turned on'); +// }); +// test(`symbols should be filtered correctly`, async () => { +// const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); +// const workspace2Uri = Uri.file(path.join(multirootPath, 'workspace2')); +// const outputChannel = new MockOutputChannel('Output'); + +// await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); +// await enableDisableWorkspaceSymbols(workspace2Uri, true, ConfigurationTarget.WorkspaceFolder); + +// const generators = [ +// new Generator(childWorkspaceUri, outputChannel), +// new Generator(workspace2Uri, outputChannel)]; +// const provider = new WorkspaceSymbolProvider(generators, outputChannel); +// const symbols = await provider.provideWorkspaceSymbols('meth1Of', new CancellationTokenSource().token); + +// assert.equal(symbols.length, 2, 'Incorrect number of symbols returned'); +// assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('childFile.py')), -1, 'File with symbol not found in child workspace folder'); +// assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('workspace2File.py')), -1, 'File with symbol not found in child workspace folder'); +// }); +// }); From 3f06bff5ff889522a677951da037f7d3152761f2 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 08:55:30 -0700 Subject: [PATCH 2/9] more logging --- src/test/workspaceSymbols/standard.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/workspaceSymbols/standard.test.ts b/src/test/workspaceSymbols/standard.test.ts index f7e0270d4fd9..be7b158ab78a 100644 --- a/src/test/workspaceSymbols/standard.test.ts +++ b/src/test/workspaceSymbols/standard.test.ts @@ -25,6 +25,12 @@ suite('Workspace Symbols', () => { await enableDisableWorkspaceSymbols(workspaceUri, false, ConfigurationTarget.Workspace); + // The workspace will be + const settings = PythonSettings.getInstance(workspaceUri); + console.log('Test'); + console.log(workspaceUri.fsPath); + console.log(settings.workspaceSymbols.tagFilePath); + let generator = new Generator(workspaceUri, outputChannel); let provider = new WorkspaceSymbolProvider([generator], outputChannel); let symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); From ce934a5fbeec9c27fc3b4548ccacee7c2623901a Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:08:25 -0700 Subject: [PATCH 3/9] yay --- src/test/workspaceSymbols/standard.test.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/test/workspaceSymbols/standard.test.ts b/src/test/workspaceSymbols/standard.test.ts index be7b158ab78a..4056b1eb15f6 100644 --- a/src/test/workspaceSymbols/standard.test.ts +++ b/src/test/workspaceSymbols/standard.test.ts @@ -8,7 +8,7 @@ import { WorkspaceSymbolProvider } from '../../client/workspaceSymbols/provider' import { enableDisableWorkspaceSymbols } from './common'; import { PythonSettings } from '../../client/common/configSettings'; -const symbolFilesPath = path.join(__dirname, '..', '..', '..', 'src', 'test', 'symbolFiles'); +const workspaceUri = Uri.file(path.join(__dirname, '..', '..', '..', 'src', 'test')); suite('Workspace Symbols', () => { suiteSetup(() => initialize()); @@ -20,16 +20,13 @@ suite('Workspace Symbols', () => { }); test(`symbols should be returned when enabeld and vice versa`, async () => { - const workspaceUri = Uri.file(path.join(symbolFilesPath, 'file.py')); const outputChannel = new MockOutputChannel('Output'); - await enableDisableWorkspaceSymbols(workspaceUri, false, ConfigurationTarget.Workspace); - // The workspace will be + // The workspace will be in the output test folder + // So lets modify the settings so it sees the source test folder const settings = PythonSettings.getInstance(workspaceUri); - console.log('Test'); - console.log(workspaceUri.fsPath); - console.log(settings.workspaceSymbols.tagFilePath); + settings.workspaceSymbols.tagFilePath = path.join(workspaceUri.fsPath, '.vscode', 'tags') let generator = new Generator(workspaceUri, outputChannel); let provider = new WorkspaceSymbolProvider([generator], outputChannel); @@ -45,9 +42,7 @@ suite('Workspace Symbols', () => { assert.notEqual(symbols.length, 0, 'Symbols should be returned when workspace symbols are turned on'); }); test(`symbols should be filtered correctly`, async () => { - const workspaceUri = Uri.file(path.join(symbolFilesPath, 'file.py')); const outputChannel = new MockOutputChannel('Output'); - await enableDisableWorkspaceSymbols(workspaceUri, true, ConfigurationTarget.Workspace); const generators = [new Generator(workspaceUri, outputChannel)]; From 6d191dd6989190e389d1dd7ae0cf6da7a54ecd16 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:08:55 -0700 Subject: [PATCH 4/9] fixed --- src/test/workspaceSymbols/standard.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/workspaceSymbols/standard.test.ts b/src/test/workspaceSymbols/standard.test.ts index 4056b1eb15f6..9719637239e5 100644 --- a/src/test/workspaceSymbols/standard.test.ts +++ b/src/test/workspaceSymbols/standard.test.ts @@ -16,7 +16,7 @@ suite('Workspace Symbols', () => { setup(() => PythonSettings.dispose()); teardown(async () => { await closeActiveWindows(); - await enableDisableWorkspaceSymbols(Uri.file(path.join(symbolFilesPath, 'file.py')), false, ConfigurationTarget.Workspace); + await enableDisableWorkspaceSymbols(workspaceUri, false, ConfigurationTarget.Workspace); }); test(`symbols should be returned when enabeld and vice versa`, async () => { From 520a0e259a45c13232c12b278e8f497f70aea9ef Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:16:46 -0700 Subject: [PATCH 5/9] more fixes --- src/test/workspaceSymbols/standard.test.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/test/workspaceSymbols/standard.test.ts b/src/test/workspaceSymbols/standard.test.ts index 9719637239e5..f32a9de3efa7 100644 --- a/src/test/workspaceSymbols/standard.test.ts +++ b/src/test/workspaceSymbols/standard.test.ts @@ -25,7 +25,7 @@ suite('Workspace Symbols', () => { // The workspace will be in the output test folder // So lets modify the settings so it sees the source test folder - const settings = PythonSettings.getInstance(workspaceUri); + let settings = PythonSettings.getInstance(workspaceUri); settings.workspaceSymbols.tagFilePath = path.join(workspaceUri.fsPath, '.vscode', 'tags') let generator = new Generator(workspaceUri, outputChannel); @@ -36,6 +36,11 @@ suite('Workspace Symbols', () => { await enableDisableWorkspaceSymbols(workspaceUri, true, ConfigurationTarget.Workspace); + // The workspace will be in the output test folder + // So lets modify the settings so it sees the source test folder + settings = PythonSettings.getInstance(workspaceUri); + settings.workspaceSymbols.tagFilePath = path.join(workspaceUri.fsPath, '.vscode', 'tags') + generator = new Generator(workspaceUri, outputChannel); provider = new WorkspaceSymbolProvider([generator], outputChannel); symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); @@ -45,6 +50,11 @@ suite('Workspace Symbols', () => { const outputChannel = new MockOutputChannel('Output'); await enableDisableWorkspaceSymbols(workspaceUri, true, ConfigurationTarget.Workspace); + // The workspace will be in the output test folder + // So lets modify the settings so it sees the source test folder + const settings = PythonSettings.getInstance(workspaceUri); + settings.workspaceSymbols.tagFilePath = path.join(workspaceUri.fsPath, '.vscode', 'tags') + const generators = [new Generator(workspaceUri, outputChannel)]; const provider = new WorkspaceSymbolProvider(generators, outputChannel); const symbols = await provider.provideWorkspaceSymbols('meth1Of', new CancellationTokenSource().token); From 93b6e07f2b23aa41dfb2a819456c9f95f43e1612 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:34:02 -0700 Subject: [PATCH 6/9] fix tests --- package.json | 2 +- src/test/standardTest.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 src/test/standardTest.ts diff --git a/package.json b/package.json index b0901281ecb4..4f65dd8eb20e 100644 --- a/package.json +++ b/package.json @@ -1593,7 +1593,7 @@ "vscode:prepublish": "tsc -p ./ && webpack", "compile": "webpack && tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", - "test": "node ./node_modules/vscode/bin/test && node ./out/test/multiRootTest.js" + "test": "node ./out/test/standardTest.js && node ./out/test/multiRootTest.js" }, "dependencies": { "anser": "^1.1.0", diff --git a/src/test/standardTest.ts b/src/test/standardTest.ts new file mode 100644 index 000000000000..ee31d40bb142 --- /dev/null +++ b/src/test/standardTest.ts @@ -0,0 +1,8 @@ +import * as path from 'path'; + +process.env.CODE_TESTS_WORKSPACE = path.join(__dirname, '..', '..', 'src', 'test'); + +function start() { + require('../../node_modules/vscode/bin/test'); +} +start(); From d08bd1d96b5d6f46b7e348577de9d2c88dce81bb Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:35:01 -0700 Subject: [PATCH 7/9] removed logging --- src/client/workspaceSymbols/parser.ts | 7 ------- src/client/workspaceSymbols/provider.ts | 6 ------ 2 files changed, 13 deletions(-) diff --git a/src/client/workspaceSymbols/parser.ts b/src/client/workspaceSymbols/parser.ts index 5030a0ca04d6..7be6e51183d4 100644 --- a/src/client/workspaceSymbols/parser.ts +++ b/src/client/workspaceSymbols/parser.ts @@ -103,7 +103,6 @@ Object.keys(newValuesAndKeys).forEach(key => { export function parseTags(workspaceFolder: string, tagFile: string, query: string, token: vscode.CancellationToken, maxItems: number = 200): Promise { return fsExistsAsync(tagFile).then(exists => { if (!exists) { - console.log('parseTags.fsExistsAsync - not found'); return null; } @@ -138,26 +137,20 @@ export function parseTags(workspaceFolder: string, tagFile: string, query: strin }); } function parseTagsLine(workspaceFolder: string, line: string, searchPattern: string): Tag { - console.log('parseTagsLine'); - console.log(`line = ${line}`); if (IsFileRegEx.test(line)) { - console.log(`not a file`); return; } let match = matchNamedRegEx(line, LINE_REGEX); if (!match) { - console.log(`not a match`); return; } if (!fuzzy.test(searchPattern, match.name)) { - console.log(`not a fuzzy match`); return; } let file = match.file; if (!path.isAbsolute(file)) { file = path.resolve(workspaceFolder, '.vscode', file); } - console.log('Symbols found'); const symbolKind = CTagKinMapping.has(match.type) ? CTagKinMapping.get(match.type) : vscode.SymbolKind.Null; const tag: Tag = { diff --git a/src/client/workspaceSymbols/provider.ts b/src/client/workspaceSymbols/provider.ts index 1108b4d9b152..e9124212e9a8 100644 --- a/src/client/workspaceSymbols/provider.ts +++ b/src/client/workspaceSymbols/provider.ts @@ -20,8 +20,6 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { const generators = await Promise.all(this.tagGenerators.map(async generator => { const tagFileExists = await fsExistsAsync(generator.tagFilePath); - console.log(`tagFileExists ${tagFileExists}`); - console.log(`tagFileExists ${generator.tagFilePath}`); return tagFileExists ? generator : undefined; })); @@ -29,12 +27,8 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { .filter(generator => generator !== undefined && generator.enabled) .map(async generator => { // load tags - console.log('parsing tags'); - console.log(`map ${generator.workspaceFolder.fsPath}`); - console.log(`map ${generator.tagFilePath}`); const items = await parseTags(generator.workspaceFolder.fsPath, generator.tagFilePath, query, token); if (!Array.isArray(items)) { - console.log('Empty Array'); return []; } return items.map(item => new vscode.SymbolInformation( From be882b0f116fa51b2d3f1f5d88b2d0a01c2041ac Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:45:28 -0700 Subject: [PATCH 8/9] enable all tests --- src/test/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/index.ts b/src/test/index.ts index ca53882b2f81..e5fe465f9647 100644 --- a/src/test/index.ts +++ b/src/test/index.ts @@ -20,8 +20,8 @@ testRunner.configure({ ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.) useColors: true, // colored output from test results timeout: 25000, - grep : 'Workspace Symbols', - // invert + grep : 'Multiroot', + invert }); initializePython(); From 56e706e7f2606712fa4114a779928795facdfe4e Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Fri, 13 Oct 2017 09:46:24 -0700 Subject: [PATCH 9/9] uncommented --- src/test/workspaceSymbols/multiroot.test.ts | 120 ++++++++++---------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/src/test/workspaceSymbols/multiroot.test.ts b/src/test/workspaceSymbols/multiroot.test.ts index 510e9112b137..270920898526 100644 --- a/src/test/workspaceSymbols/multiroot.test.ts +++ b/src/test/workspaceSymbols/multiroot.test.ts @@ -1,60 +1,60 @@ -// import * as assert from 'assert'; -// import * as path from 'path'; -// import { CancellationTokenSource, ConfigurationTarget, Uri } from 'vscode'; -// import { initialize, closeActiveWindows } from '../initialize'; -// import { Generator } from '../../client/workspaceSymbols/generator'; -// import { MockOutputChannel } from '../mockClasses'; -// import { WorkspaceSymbolProvider } from '../../client/workspaceSymbols/provider'; -// import { enableDisableWorkspaceSymbols } from './common'; -// import { PythonSettings } from '../../client/common/configSettings'; - -// const multirootPath = path.join(__dirname, '..', '..', '..', 'src', 'test', 'multiRootWkspc'); - -// suite('Multiroot Workspace Symbols', () => { -// suiteSetup(() => initialize()); -// setup(() => PythonSettings.dispose()); -// suiteTeardown(() => closeActiveWindows()); -// teardown(async () => { -// await closeActiveWindows(); -// await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'parent', 'child')), false, ConfigurationTarget.WorkspaceFolder); -// await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'workspace2')), false, ConfigurationTarget.WorkspaceFolder); -// }); - -// test(`symbols should be returned when enabeld and vice versa`, async () => { -// const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); -// const outputChannel = new MockOutputChannel('Output'); - -// await enableDisableWorkspaceSymbols(childWorkspaceUri, false, ConfigurationTarget.WorkspaceFolder); - -// let generator = new Generator(childWorkspaceUri, outputChannel); -// let provider = new WorkspaceSymbolProvider([generator], outputChannel); -// let symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); -// assert.equal(symbols.length, 0, 'Symbols returned even when workspace symbols are turned off'); -// generator.dispose(); - -// await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); - -// generator = new Generator(childWorkspaceUri, outputChannel); -// provider = new WorkspaceSymbolProvider([generator], outputChannel); -// symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); -// assert.notEqual(symbols.length, 0, 'Symbols should be returned when workspace symbols are turned on'); -// }); -// test(`symbols should be filtered correctly`, async () => { -// const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); -// const workspace2Uri = Uri.file(path.join(multirootPath, 'workspace2')); -// const outputChannel = new MockOutputChannel('Output'); - -// await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); -// await enableDisableWorkspaceSymbols(workspace2Uri, true, ConfigurationTarget.WorkspaceFolder); - -// const generators = [ -// new Generator(childWorkspaceUri, outputChannel), -// new Generator(workspace2Uri, outputChannel)]; -// const provider = new WorkspaceSymbolProvider(generators, outputChannel); -// const symbols = await provider.provideWorkspaceSymbols('meth1Of', new CancellationTokenSource().token); - -// assert.equal(symbols.length, 2, 'Incorrect number of symbols returned'); -// assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('childFile.py')), -1, 'File with symbol not found in child workspace folder'); -// assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('workspace2File.py')), -1, 'File with symbol not found in child workspace folder'); -// }); -// }); +import * as assert from 'assert'; +import * as path from 'path'; +import { CancellationTokenSource, ConfigurationTarget, Uri } from 'vscode'; +import { initialize, closeActiveWindows } from '../initialize'; +import { Generator } from '../../client/workspaceSymbols/generator'; +import { MockOutputChannel } from '../mockClasses'; +import { WorkspaceSymbolProvider } from '../../client/workspaceSymbols/provider'; +import { enableDisableWorkspaceSymbols } from './common'; +import { PythonSettings } from '../../client/common/configSettings'; + +const multirootPath = path.join(__dirname, '..', '..', '..', 'src', 'test', 'multiRootWkspc'); + +suite('Multiroot Workspace Symbols', () => { + suiteSetup(() => initialize()); + setup(() => PythonSettings.dispose()); + suiteTeardown(() => closeActiveWindows()); + teardown(async () => { + await closeActiveWindows(); + await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'parent', 'child')), false, ConfigurationTarget.WorkspaceFolder); + await enableDisableWorkspaceSymbols(Uri.file(path.join(multirootPath, 'workspace2')), false, ConfigurationTarget.WorkspaceFolder); + }); + + test(`symbols should be returned when enabeld and vice versa`, async () => { + const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); + const outputChannel = new MockOutputChannel('Output'); + + await enableDisableWorkspaceSymbols(childWorkspaceUri, false, ConfigurationTarget.WorkspaceFolder); + + let generator = new Generator(childWorkspaceUri, outputChannel); + let provider = new WorkspaceSymbolProvider([generator], outputChannel); + let symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); + assert.equal(symbols.length, 0, 'Symbols returned even when workspace symbols are turned off'); + generator.dispose(); + + await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); + + generator = new Generator(childWorkspaceUri, outputChannel); + provider = new WorkspaceSymbolProvider([generator], outputChannel); + symbols = await provider.provideWorkspaceSymbols('', new CancellationTokenSource().token); + assert.notEqual(symbols.length, 0, 'Symbols should be returned when workspace symbols are turned on'); + }); + test(`symbols should be filtered correctly`, async () => { + const childWorkspaceUri = Uri.file(path.join(multirootPath, 'parent', 'child')); + const workspace2Uri = Uri.file(path.join(multirootPath, 'workspace2')); + const outputChannel = new MockOutputChannel('Output'); + + await enableDisableWorkspaceSymbols(childWorkspaceUri, true, ConfigurationTarget.WorkspaceFolder); + await enableDisableWorkspaceSymbols(workspace2Uri, true, ConfigurationTarget.WorkspaceFolder); + + const generators = [ + new Generator(childWorkspaceUri, outputChannel), + new Generator(workspace2Uri, outputChannel)]; + const provider = new WorkspaceSymbolProvider(generators, outputChannel); + const symbols = await provider.provideWorkspaceSymbols('meth1Of', new CancellationTokenSource().token); + + assert.equal(symbols.length, 2, 'Incorrect number of symbols returned'); + assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('childFile.py')), -1, 'File with symbol not found in child workspace folder'); + assert.notEqual(symbols.findIndex(sym => sym.location.uri.fsPath.endsWith('workspace2File.py')), -1, 'File with symbol not found in child workspace folder'); + }); +});