提交 3903920e 编写于 作者: D Daniel Imms

Make (empty)workspaceBackupPaths getters on BackupMainService

上级 df67ad48
......@@ -330,11 +330,11 @@ export class WindowsManager implements IWindowsMainService {
}
let foldersToOpen = arrays.distinct(iPathsToOpen.filter(iPath => iPath.workspacePath && !iPath.filePath).map(iPath => iPath.workspacePath), folder => platform.isLinux ? folder : folder.toLowerCase()); // prevent duplicates
let foldersToRestore = (openConfig.initialStartup && !openConfig.cli.extensionDevelopmentPath) ? this.backupService.getWorkspaceBackupPaths() : [];
let foldersToRestore = (openConfig.initialStartup && !openConfig.cli.extensionDevelopmentPath) ? this.backupService.workspaceBackupPaths : [];
let filesToOpen: IPath[] = [];
let filesToDiff: IPath[] = [];
let emptyToOpen = iPathsToOpen.filter(iPath => !iPath.workspacePath && !iPath.filePath);
let emptyToRestore = (openConfig.initialStartup && !openConfig.cli.extensionDevelopmentPath) ? this.backupService.getEmptyWorkspaceBackupWindowIds() : [];
let emptyToRestore = (openConfig.initialStartup && !openConfig.cli.extensionDevelopmentPath) ? this.backupService.emptyWorkspaceBackupPaths : [];
let filesToCreate = iPathsToOpen.filter(iPath => !!iPath.filePath && iPath.createFilePath);
// Diff mode needs special care
......
......@@ -18,17 +18,17 @@ export const IBackupService = createDecorator<IBackupService>('backupService');
export interface IBackupMainService extends IBackupService {
_serviceBrand: any;
registerWindowForBackups(windowId: number, isEmptyWorkspace: boolean, backupFolder?: string): void;
/**
* The set of active workspace backup paths being tracked for restoration.
*/
workspaceBackupPaths: string[];
/**
* Gets the set of active workspace backup paths being tracked for restoration.
*
* @return The set of active workspace backup paths being tracked for restoration.
* The set of active empty workspace backup paths being tracked for restoration.
*/
getWorkspaceBackupPaths(): string[];
emptyWorkspaceBackupPaths: string[];
// TODO: Doc
getEmptyWorkspaceBackupWindowIds(): string[];
registerWindowForBackups(windowId: number, isEmptyWorkspace: boolean, backupFolder?: string): void;
/**
* Pushes workspace backup paths to be tracked for restoration.
......
......@@ -34,6 +34,14 @@ export class BackupMainService implements IBackupMainService {
this.loadSync();
}
public get workspaceBackupPaths(): string[] {
return this.backups.folderWorkspaces;
}
public get emptyWorkspaceBackupPaths(): string[] {
return this.backups.emptyWorkspaces;
}
public getBackupPath(windowId: number): TPromise<string> {
if (!this.mapWindowToBackupFolder[windowId]) {
throw new Error(`Unknown backup workspace for window ${windowId}`);
......@@ -63,14 +71,6 @@ export class BackupMainService implements IBackupMainService {
}
}
public getWorkspaceBackupPaths(): string[] {
return this.backups.folderWorkspaces;
}
public getEmptyWorkspaceBackupWindowIds(): string[] {
return this.backups.emptyWorkspaces;
}
public pushWorkspaceBackupPathsSync(workspaces: Uri[]): void {
let needsSaving = false;
workspaces.forEach(workspace => {
......
......@@ -67,41 +67,41 @@ suite('BackupMainService', () => {
});
test('getWorkspaceBackupPaths should return [] when workspaces.json doesn\'t exist', () => {
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
});
test('getWorkspaceBackupPaths should return [] when workspaces.json is not properly formed JSON', () => {
fs.writeFileSync(backupWorkspacesPath, '');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, '{]');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, 'foo');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
});
test('getWorkspaceBackupPaths should return [] when folderWorkspaces in workspaces.json is absent', () => {
fs.writeFileSync(backupWorkspacesPath, '{}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
});
test('getWorkspaceBackupPaths should return [] when folderWorkspaces in workspaces.json is not a string array', () => {
fs.writeFileSync(backupWorkspacesPath, '{"folderWorkspaces":{}}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, '{"folderWorkspaces":{"foo": ["bar"]}}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, '{"folderWorkspaces":{"foo": []}}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, '{"folderWorkspaces":{"foo": "bar"}}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, '{"folderWorkspaces":"foo"}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
fs.writeFileSync(backupWorkspacesPath, '{"folderWorkspaces":1}');
assert.deepEqual(service.getWorkspaceBackupPaths(), []);
assert.deepEqual(service.workspaceBackupPaths, []);
});
test('pushWorkspaceBackupPathsSync should persist paths to workspaces.json', () => {
service.pushWorkspaceBackupPathsSync([fooFile, barFile]);
assert.deepEqual(service.getWorkspaceBackupPaths(), [fooFile.fsPath, barFile.fsPath]);
assert.deepEqual(service.workspaceBackupPaths, [fooFile.fsPath, barFile.fsPath]);
});
test('removeWorkspaceBackupPath should remove workspaces from workspaces.json', done => {
......@@ -136,14 +136,14 @@ suite('BackupMainService', () => {
// 1) backup workspace path does not exist
service.pushWorkspaceBackupPathsSync([fooFile, barFile]);
service.loadSync();
assert.equal(service.getWorkspaceBackupPaths().length, 0);
assert.equal(service.workspaceBackupPaths.length, 0);
// 2) backup workspace path exists with empty contents within
fs.mkdirSync(service.toBackupPath(fooFile.fsPath));
fs.mkdirSync(service.toBackupPath(barFile.fsPath));
service.pushWorkspaceBackupPathsSync([fooFile, barFile]);
service.loadSync();
assert.equal(service.getWorkspaceBackupPaths().length, 0);
assert.equal(service.workspaceBackupPaths.length, 0);
assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath)));
assert.ok(!fs.exists(service.toBackupPath(barFile.fsPath)));
......@@ -154,7 +154,7 @@ suite('BackupMainService', () => {
fs.mkdirSync(path.join(service.toBackupPath(barFile.fsPath), 'untitled'));
service.pushWorkspaceBackupPathsSync([fooFile, barFile]);
service.loadSync();
assert.equal(service.getWorkspaceBackupPaths().length, 0);
assert.equal(service.workspaceBackupPaths.length, 0);
assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath)));
assert.ok(!fs.exists(service.toBackupPath(barFile.fsPath)));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册