Skip to content

Commit 53b7c52

Browse files
Copilotedvilme
andauthored
Resolve equivalent file project paths in capability queries
Co-authored-by: edvilme <5952839+edvilme@users.noreply.github.com>
1 parent 7720a8e commit 53b7c52

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

‎src/extensionApi.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Disposable, Event, EventEmitter, l10n, TaskExecution, Terminal, Uri } from 'vscode';
2+
import * as path from 'path';
23
import type { CapabilityContext, EnvironmentManagerCapability, PackageManagerCapability, Support } from './capabilities';
34
import { isKnownManagerCapability } from './capabilities';
45
import { explain as parsePep440Version } from '@renovatebot/pep440';
@@ -203,7 +204,7 @@ export class PythonEnvironmentApiImpl implements PythonEnvironmentApi {
203204
const registeredProject = project && this.projectManager.getProjects().find(
204205
({ uri }) => uri.scheme === project.uri.scheme && (
205206
uri.scheme === 'file'
206-
? normalizePath(uri.fsPath) === normalizePath(project.uri.fsPath)
207+
? normalizePath(path.resolve(uri.fsPath)) === normalizePath(path.resolve(project.uri.fsPath))
207208
: uri.toString() === project.uri.toString()
208209
),
209210
);

‎src/test/extensionApi.capabilities.unit.test.ts‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,17 @@ suite('PythonEnvironmentApiImpl - capability queries', () => {
312312
await clock.tickAsync(0);
313313
});
314314

315+
test('file project matching resolves equivalent paths before routing', async () => {
316+
const create = registerPackages(true);
317+
for (const suffix of ['/', '/./']) {
318+
const equivalentProject = { ...project, uri: project.uri.with({ path: `${project.uri.path}${suffix}` }) };
319+
assert.strictEqual(await api.getPackageManagerCapability(environment, PackageCapability.List, equivalentProject), scopedSupport);
320+
}
321+
assert.ok(create?.calledOnceWithExactly(project));
322+
assert.ok(scopedProbe.calledTwice);
323+
assert.ok(scopedProbe.alwaysCalledWithExactly({ environment, project }));
324+
});
325+
315326
test('an untracked explicit project never probes a root or a containing project provider', async () => {
316327
projects = [];
317328
const create = registerPackages(true);

0 commit comments

Comments
 (0)