|
4 | 4 | import { inject, injectable, named } from 'inversify'; |
5 | 5 | import { uniq } from 'lodash'; |
6 | 6 | import * as minimatch from 'minimatch'; |
| 7 | +import * as path from 'path'; |
7 | 8 | import { |
8 | 9 | CancellationToken, |
9 | 10 | TestController, |
@@ -56,6 +57,7 @@ import { ProjectAdapter } from './common/projectAdapter'; |
56 | 57 | import { getProjectId, createProjectDisplayName } from './common/projectUtils'; |
57 | 58 | import { PythonProject, PythonEnvironment } from '../../envExt/types'; |
58 | 59 | import { getEnvExtApi, useEnvExtension } from '../../envExt/api.internal'; |
| 60 | +import { isParentPath } from '../../common/platform/fs-paths'; |
59 | 61 |
|
60 | 62 | // Types gymnastics to make sure that sendTriggerTelemetry only accepts the correct types. |
61 | 63 | type EventPropertyType = IEventNamePropertyMapping[EventName.UNITTEST_DISCOVERY_TRIGGER]; |
@@ -332,9 +334,9 @@ export class PythonTestController implements ITestController, IExtensionSingleAc |
332 | 334 | const pythonProjects = envExtApi.getPythonProjects(); |
333 | 335 | traceInfo(`[test-by-project] Found ${pythonProjects.length} total Python projects from API`); |
334 | 336 |
|
335 | | - // Filter projects to only those in this workspace |
| 337 | + // Filter projects to only those in this workspace TODO; check this |
336 | 338 | const workspaceProjects = pythonProjects.filter((project) => |
337 | | - project.uri.fsPath.startsWith(workspaceUri.fsPath), |
| 339 | + isParentPath(project.uri.fsPath, workspaceUri.fsPath), |
338 | 340 | ); |
339 | 341 | traceInfo(`[test-by-project] Filtered to ${workspaceProjects.length} projects in workspace`); |
340 | 342 |
|
@@ -384,11 +386,11 @@ export class PythonTestController implements ITestController, IExtensionSingleAc |
384 | 386 | `[test-by-project] Creating project adapter for: ${pythonProject.name} at ${pythonProject.uri.fsPath}`, |
385 | 387 | ); |
386 | 388 | // Use project URI as the project ID (no hashing needed) |
387 | | - const projectId = getProjectId(pythonProject.uri); |
| 389 | + const projectId = pythonProject.uri.fsPath; |
388 | 390 |
|
389 | 391 | // Resolve the Python environment |
390 | 392 | const envExtApi = await getEnvExtApi(); |
391 | | - const pythonEnvironment = await envExtApi.resolveEnvironment(pythonProject.uri); |
| 393 | + const pythonEnvironment = await envExtApi.getEnvironment(pythonProject.uri); |
392 | 394 |
|
393 | 395 | if (!pythonEnvironment) { |
394 | 396 | throw new Error(`Failed to resolve Python environment for project ${pythonProject.uri.fsPath}`); |
@@ -461,7 +463,8 @@ export class PythonTestController implements ITestController, IExtensionSingleAc |
461 | 463 |
|
462 | 464 | // Create a mock PythonProject |
463 | 465 | const pythonProject: PythonProject = { |
464 | | - name: workspaceUri.fsPath.split('/').pop() || 'workspace', |
| 466 | + // Do not assume path separators (fsPath is platform-specific). |
| 467 | + name: path.basename(workspaceUri.fsPath) || 'workspace', |
465 | 468 | uri: workspaceUri, |
466 | 469 | }; |
467 | 470 |
|
|
0 commit comments