Skip to content

Commit a97196e

Browse files
author
Benjamin Pasero
committed
use more proper types for workspace on main side
1 parent ccb631c commit a97196e

6 files changed

Lines changed: 20 additions & 15 deletions

File tree

src/vs/code/electron-main/windows.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1820,7 +1820,7 @@ class WorkspacesManager {
18201820
} else {
18211821
const resolvedWorkspace = this.workspacesService.resolveWorkspaceSync(workspace.configPath);
18221822
if (resolvedWorkspace && resolvedWorkspace.folders.length > 0) {
1823-
defaultPath = dirname(resolvedWorkspace.folders[0].path);
1823+
defaultPath = dirname(resolvedWorkspace.folders[0].uri.fsPath);
18241824
}
18251825
}
18261826
}

src/vs/code/node/windowsFinder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ function findWindowOnFilePath<W extends ISimpleWindow>(windows: W[], filePath: s
6262
for (let i = 0; i < workspaceWindows.length; i++) {
6363
const window = workspaceWindows[i];
6464
const resolvedWorkspace = workspaceResolver(window.openedWorkspace);
65-
if (resolvedWorkspace && resolvedWorkspace.folders.some(folder => paths.isEqualOrParent(filePath, folder.path, !platform.isLinux /* ignorecase */))) {
65+
if (resolvedWorkspace && resolvedWorkspace.folders.some(folder => paths.isEqualOrParent(filePath, folder.uri.fsPath, !platform.isLinux /* ignorecase */))) {
6666
return window;
6767
}
6868
}

src/vs/code/test/node/windowsFinder.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import path = require('path');
99
import { findBestWindowOrFolderForFile, ISimpleWindow, IBestWindowOrFolderOptions } from 'vs/code/node/windowsFinder';
1010
import { OpenContext } from 'vs/platform/windows/common/windows';
1111
import { IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
12+
import { toWorkspaceFolders } from 'vs/platform/workspace/common/workspace';
1213

1314
const fixturesFolder = require.toUrl('./fixtures');
1415

@@ -24,7 +25,7 @@ function options(custom?: Partial<IBestWindowOrFolderOptions<ISimpleWindow>>): I
2425
reuseWindow: false,
2526
context: OpenContext.CLI,
2627
codeSettingsFolder: '_vscode',
27-
workspaceResolver: workspace => { return workspace === testWorkspace ? { id: testWorkspace.id, configPath: workspace.configPath, folders: [{ path: path.join(fixturesFolder, 'vscode_workspace_1_folder') }, { path: path.join(fixturesFolder, 'vscode_workspace_2_folder') }] } : null; },
28+
workspaceResolver: workspace => { return workspace === testWorkspace ? { id: testWorkspace.id, configPath: workspace.configPath, folders: toWorkspaceFolders([{ path: path.join(fixturesFolder, 'vscode_workspace_1_folder') }, { path: path.join(fixturesFolder, 'vscode_workspace_2_folder') }]) } : null; },
2829
...custom
2930
};
3031
}

src/vs/platform/workspaces/common/workspaces.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { isLinux } from 'vs/base/common/platform';
1414
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
1515
import Event from 'vs/base/common/event';
1616
import { tildify, getPathLabel } from 'vs/base/common/labels';
17+
import { WorkspaceFolder } from 'vs/platform/workspace/common/workspace';
1718

1819
export const IWorkspacesMainService = createDecorator<IWorkspacesMainService>('workspacesMainService');
1920
export const IWorkspacesService = createDecorator<IWorkspacesService>('workspacesService');
@@ -37,12 +38,10 @@ export interface IStoredWorkspaceFolder {
3738
name?: string;
3839
}
3940

40-
export interface IStoredWorkspace {
41-
folders: IStoredWorkspaceFolder[];
41+
export interface IResolvedWorkspace extends IWorkspaceIdentifier {
42+
folders: WorkspaceFolder[];
4243
}
4344

44-
export interface IResolvedWorkspace extends IWorkspaceIdentifier, IStoredWorkspace { }
45-
4645
export interface IWorkspaceSavedEvent {
4746
workspace: IWorkspaceIdentifier;
4847
oldConfigPath: string;

src/vs/platform/workspaces/electron-main/workspacesMainService.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
'use strict';
77

8-
import { IWorkspacesMainService, IWorkspaceIdentifier, IStoredWorkspace, WORKSPACE_EXTENSION, IWorkspaceSavedEvent, UNTITLED_WORKSPACE_NAME, IResolvedWorkspace } from 'vs/platform/workspaces/common/workspaces';
8+
import { IWorkspacesMainService, IWorkspaceIdentifier, WORKSPACE_EXTENSION, IWorkspaceSavedEvent, UNTITLED_WORKSPACE_NAME, IResolvedWorkspace, IStoredWorkspaceFolder } from 'vs/platform/workspaces/common/workspaces';
99
import { TPromise } from 'vs/base/common/winjs.base';
1010
import { isParent } from 'vs/platform/files/common/files';
1111
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
@@ -23,6 +23,11 @@ import * as json from 'vs/base/common/json';
2323
import * as jsonEdit from 'vs/base/common/jsonEdit';
2424
import { applyEdit } from 'vs/base/common/jsonFormatter';
2525
import { massageFolderPathForWorkspace } from 'vs/platform/workspaces/node/workspaces';
26+
import { toWorkspaceFolders } from 'vs/platform/workspace/common/workspace';
27+
28+
export interface IStoredWorkspace {
29+
folders: IStoredWorkspaceFolder[];
30+
}
2631

2732
export class WorkspacesMainService implements IWorkspacesMainService {
2833

@@ -85,7 +90,7 @@ export class WorkspacesMainService implements IWorkspacesMainService {
8590
return {
8691
id: this.getWorkspaceId(path),
8792
configPath: path,
88-
folders: workspace.folders
93+
folders: toWorkspaceFolders(workspace.folders)
8994
};
9095
} catch (error) {
9196
this.logService.log(error.toString());

src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import extfs = require('vs/base/node/extfs');
1313
import pfs = require('vs/base/node/pfs');
1414
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
1515
import { parseArgs } from 'vs/platform/environment/node/argv';
16-
import { WorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
17-
import { IStoredWorkspace, WORKSPACE_EXTENSION, IWorkspaceSavedEvent, IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
16+
import { WorkspacesMainService, IStoredWorkspace } from 'vs/platform/workspaces/electron-main/workspacesMainService';
17+
import { WORKSPACE_EXTENSION, IWorkspaceSavedEvent, IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
1818
import { LogMainService } from 'vs/platform/log/common/log';
1919
import URI from 'vs/base/common/uri';
2020

@@ -138,7 +138,7 @@ suite('WorkspacesMainService', () => {
138138
fs.writeFileSync(workspace.configPath, JSON.stringify({ folders: [{ path: './ticino-playground/lib' }] }));
139139

140140
const resolved = service.resolveWorkspaceSync(workspace.configPath);
141-
assert.equal(URI.file(resolved.folders[0].path).fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath);
141+
assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath);
142142

143143
done();
144144
});
@@ -149,7 +149,7 @@ suite('WorkspacesMainService', () => {
149149
fs.writeFileSync(workspace.configPath, JSON.stringify({ folders: [{ path: './ticino-playground/lib/../other' }] }));
150150

151151
const resolved = service.resolveWorkspaceSync(workspace.configPath);
152-
assert.equal(URI.file(resolved.folders[0].path).fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'other')).fsPath);
152+
assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'other')).fsPath);
153153

154154
done();
155155
});
@@ -160,7 +160,7 @@ suite('WorkspacesMainService', () => {
160160
fs.writeFileSync(workspace.configPath, JSON.stringify({ folders: [{ path: 'ticino-playground/lib' }] }));
161161

162162
const resolved = service.resolveWorkspaceSync(workspace.configPath);
163-
assert.equal(URI.file(resolved.folders[0].path).fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath);
163+
assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath);
164164

165165
done();
166166
});
@@ -171,7 +171,7 @@ suite('WorkspacesMainService', () => {
171171
fs.writeFileSync(workspace.configPath, '{ "folders": [ { "path": "./ticino-playground/lib" } , ] }'); // trailing comma
172172

173173
const resolved = service.resolveWorkspaceSync(workspace.configPath);
174-
assert.equal(URI.file(resolved.folders[0].path).fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath);
174+
assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath);
175175

176176
done();
177177
});

0 commit comments

Comments
 (0)