diff --git a/src/vs/platform/workspace/common/workspace.ts b/src/vs/platform/workspace/common/workspace.ts index 5f415bd590bf6bc33b5f4287ab8dcc0f0ca1ef1c..5353a0eb7e7d4ee3e78fa1638f3418812f428c35 100644 --- a/src/vs/platform/workspace/common/workspace.ts +++ b/src/vs/platform/workspace/common/workspace.ts @@ -185,7 +185,11 @@ export class Workspace implements IWorkspace { return null; } - return this._foldersMap.findSubstr(resource.toString()) || null; + return this._foldersMap.findSubstr(resource.with({ + scheme: resource.scheme, + authority: resource.authority, + path: resource.path + }).toString()) || null; } private updateFoldersMap(): void { diff --git a/src/vs/platform/workspace/test/common/workspace.test.ts b/src/vs/platform/workspace/test/common/workspace.test.ts index 63dff7e2bf5e8d1de52f0ffe7006a523e177f1bf..10e257276db8623eb04a386acd1069ecae0f651e 100644 --- a/src/vs/platform/workspace/test/common/workspace.test.ts +++ b/src/vs/platform/workspace/test/common/workspace.test.ts @@ -52,6 +52,15 @@ suite('Workspace', () => { assert.equal(actual, expected); }); + test('getFolder returns the folder even if the uri has query path', () => { + const expected = new WorkspaceFolder({ uri: testFolderUri, name: '', index: 2 }); + let testObject = new Workspace('', [new WorkspaceFolder({ uri: mainFolderUri, name: '', index: 0 }), new WorkspaceFolder({ uri: URI.file('/src/code'), name: '', index: 1 }), expected]); + + const actual = testObject.getFolder(URI.file(path.join(fileFolder, 'test/a')).with({ query: 'somequery' })); + + assert.equal(actual, expected); + }); + test('getFolder returns null if the uri is not sub', () => { let testObject = new Workspace('', [new WorkspaceFolder({ uri: testFolderUri, name: '', index: 0 }), new WorkspaceFolder({ uri: URI.file('/src/code'), name: '', index: 1 })]);