mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
[ide-mode] Fix path delimiter for multi-root workspaces on Windows (#6273)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
This commit is contained in:
committed by
GitHub
parent
3c0af3654a
commit
4896c7739f
@@ -6,6 +6,7 @@
|
||||
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import * as vscode from 'vscode';
|
||||
import * as path from 'path';
|
||||
import { activate } from './extension.js';
|
||||
|
||||
vi.mock('vscode', () => ({
|
||||
@@ -102,7 +103,7 @@ describe('activate with multiple folders', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should set multiple folder paths, separated by a colon', async () => {
|
||||
it('should set multiple folder paths, separated by OS-specific path delimiter', async () => {
|
||||
const workspaceFoldersSpy = vi.spyOn(
|
||||
vscode.workspace,
|
||||
'workspaceFolders',
|
||||
@@ -117,7 +118,7 @@ describe('activate with multiple folders', () => {
|
||||
|
||||
expect(context.environmentVariableCollection.replace).toHaveBeenCalledWith(
|
||||
'GEMINI_CLI_IDE_WORKSPACE_PATH',
|
||||
'/foo/bar:/baz/qux',
|
||||
['/foo/bar', '/baz/qux'].join(path.delimiter),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -166,7 +167,7 @@ describe('activate with multiple folders', () => {
|
||||
|
||||
expect(context.environmentVariableCollection.replace).toHaveBeenCalledWith(
|
||||
'GEMINI_CLI_IDE_WORKSPACE_PATH',
|
||||
'/foo/bar:/baz/qux',
|
||||
['/foo/bar', '/baz/qux'].join(path.delimiter),
|
||||
);
|
||||
|
||||
// Simulate removing a folder
|
||||
@@ -183,4 +184,28 @@ describe('activate with multiple folders', () => {
|
||||
'/baz/qux',
|
||||
);
|
||||
});
|
||||
|
||||
it.skipIf(process.platform !== 'win32')(
|
||||
'should handle windows paths',
|
||||
async () => {
|
||||
const workspaceFoldersSpy = vi.spyOn(
|
||||
vscode.workspace,
|
||||
'workspaceFolders',
|
||||
'get',
|
||||
);
|
||||
workspaceFoldersSpy.mockReturnValue([
|
||||
{ uri: { fsPath: 'c:/foo/bar' } },
|
||||
{ uri: { fsPath: 'd:/baz/qux' } },
|
||||
] as vscode.WorkspaceFolder[]);
|
||||
|
||||
await activate(context);
|
||||
|
||||
expect(
|
||||
context.environmentVariableCollection.replace,
|
||||
).toHaveBeenCalledWith(
|
||||
'GEMINI_CLI_IDE_WORKSPACE_PATH',
|
||||
'c:/foo/bar;d:/baz/qux',
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import * as path from 'path';
|
||||
import { IDEServer } from './ide-server.js';
|
||||
import { DiffContentProvider, DiffManager } from './diff-manager.js';
|
||||
import { createLogger } from './utils/logger.js';
|
||||
@@ -23,7 +24,7 @@ function updateWorkspacePath(context: vscode.ExtensionContext) {
|
||||
if (workspaceFolders && workspaceFolders.length > 0) {
|
||||
const workspacePaths = workspaceFolders
|
||||
.map((folder) => folder.uri.fsPath)
|
||||
.join(':');
|
||||
.join(path.delimiter);
|
||||
context.environmentVariableCollection.replace(
|
||||
IDE_WORKSPACE_PATH_ENV_VAR,
|
||||
workspacePaths,
|
||||
|
||||
Reference in New Issue
Block a user