提交 b158bfb8 编写于 作者: D Daniel Imms

Fix tests

上级 9ead89a7
...@@ -52,7 +52,7 @@ export class BackupMainService implements IBackupMainService { ...@@ -52,7 +52,7 @@ export class BackupMainService implements IBackupMainService {
public registerWindowForBackups(windowId: number, isEmptyWorkspace: boolean, backupFolder?: string, workspacePath?: string): void { public registerWindowForBackups(windowId: number, isEmptyWorkspace: boolean, backupFolder?: string, workspacePath?: string): void {
// Generate a new folder if this is a new empty workspace // Generate a new folder if this is a new empty workspace
if (!backupFolder) { if (isEmptyWorkspace && !backupFolder) {
backupFolder = Date.now().toString(); backupFolder = Date.now().toString();
} }
...@@ -60,7 +60,7 @@ export class BackupMainService implements IBackupMainService { ...@@ -60,7 +60,7 @@ export class BackupMainService implements IBackupMainService {
this.pushBackupPathsSync(isEmptyWorkspace ? backupFolder : this.sanitizePath(workspacePath), isEmptyWorkspace); this.pushBackupPathsSync(isEmptyWorkspace ? backupFolder : this.sanitizePath(workspacePath), isEmptyWorkspace);
} }
protected pushBackupPathsSync(workspaceIdentifier: string, isEmptyWorkspace?: boolean): void { protected pushBackupPathsSync(workspaceIdentifier: string, isEmptyWorkspace: boolean): void {
if (!isEmptyWorkspace) { if (!isEmptyWorkspace) {
workspaceIdentifier = this.sanitizePath(workspaceIdentifier); workspaceIdentifier = this.sanitizePath(workspaceIdentifier);
} }
...@@ -131,20 +131,31 @@ export class BackupMainService implements IBackupMainService { ...@@ -131,20 +131,31 @@ export class BackupMainService implements IBackupMainService {
} }
private validateBackupWorkspaces(backups: IBackupWorkspacesFormat): void { private validateBackupWorkspaces(backups: IBackupWorkspacesFormat): void {
const staleBackupWorkspaces: { workspaceIdentifier: string; backupPath: string; isEmptyWorkspace: boolean }[] = [];
backups.folderWorkspaces.forEach(workspacePath => { backups.folderWorkspaces.forEach(workspacePath => {
const backupPath = path.join(this.backupHome, this.getWorkspaceHash(workspacePath)); const backupPath = path.join(this.backupHome, this.getWorkspaceHash(workspacePath));
console.log('this.hasBackupsSync(backupPath) for ' + workspacePath + ' : ' + this.hasBackupsSync(backupPath));
if (!this.hasBackupsSync(backupPath)) { if (!this.hasBackupsSync(backupPath)) {
extfs.delSync(backupPath); const backupWorkspace = this.sanitizePath(workspacePath);
const backupWorkspace = Uri.file(this.sanitizePath(workspacePath)); staleBackupWorkspaces.push({ workspaceIdentifier: backupWorkspace, backupPath, isEmptyWorkspace: false });
this.removeWorkspaceBackupPathSync(backupWorkspace);
} }
}); });
backups.emptyWorkspaces.forEach(backupFolder => { backups.emptyWorkspaces.forEach(backupFolder => {
const backupPath = path.join(this.backupHome, backupFolder); const backupPath = path.join(this.backupHome, backupFolder);
if (!this.hasBackupsSync(backupPath)) { if (!this.hasBackupsSync(backupPath)) {
extfs.delSync(backupPath); staleBackupWorkspaces.push({ workspaceIdentifier: backupFolder, backupPath, isEmptyWorkspace: true });
this.removeEmptyWorkspaceBackupFolder(backupFolder); }
});
staleBackupWorkspaces.forEach(staleBackupWorkspace => {
const {backupPath, workspaceIdentifier, isEmptyWorkspace} = staleBackupWorkspace;
extfs.delSync(backupPath);
if (isEmptyWorkspace) {
this.removeEmptyWorkspaceBackupFolder(workspaceIdentifier);
} else {
this.removeWorkspaceBackupPathSync(Uri.file(workspaceIdentifier));
} }
}); });
} }
...@@ -184,7 +195,7 @@ export class BackupMainService implements IBackupMainService { ...@@ -184,7 +195,7 @@ export class BackupMainService implements IBackupMainService {
return platform.isLinux ? p : p.toLowerCase(); return platform.isLinux ? p : p.toLowerCase();
} }
private getWorkspaceHash(workspacePath: string): string { protected getWorkspaceHash(workspacePath: string): string {
return crypto.createHash('md5').update(this.sanitizePath(workspacePath)).digest('hex'); return crypto.createHash('md5').update(this.sanitizePath(workspacePath)).digest('hex');
} }
} }
...@@ -37,7 +37,7 @@ class TestBackupMainService extends BackupMainService { ...@@ -37,7 +37,7 @@ class TestBackupMainService extends BackupMainService {
} }
public toBackupPath(workspacePath: string): string { public toBackupPath(workspacePath: string): string {
return super.toBackupPath(workspacePath); return path.join(this.backupHome, super.getWorkspaceHash(workspacePath));
} }
} }
...@@ -100,12 +100,14 @@ suite('BackupMainService', () => { ...@@ -100,12 +100,14 @@ suite('BackupMainService', () => {
}); });
test('pushWorkspaceBackupPathsSync should persist paths to workspaces.json', () => { test('pushWorkspaceBackupPathsSync should persist paths to workspaces.json', () => {
service.pushWorkspaceBackupPathsSync([fooFile, barFile]); service.registerWindowForBackups(1, false, null, fooFile.fsPath);
service.registerWindowForBackups(2, false, null, barFile.fsPath);
assert.deepEqual(service.workspaceBackupPaths, [fooFile.fsPath, barFile.fsPath]); assert.deepEqual(service.workspaceBackupPaths, [fooFile.fsPath, barFile.fsPath]);
}); });
test('removeWorkspaceBackupPath should remove workspaces from workspaces.json', done => { test('removeWorkspaceBackupPath should remove workspaces from workspaces.json', done => {
service.pushWorkspaceBackupPathsSync([fooFile, barFile]); service.registerWindowForBackups(1, false, null, fooFile.fsPath);
service.registerWindowForBackups(2, false, null, barFile.fsPath);
service.removeWorkspaceBackupPathSync(fooFile); service.removeWorkspaceBackupPathSync(fooFile);
pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => {
const json = <IBackupWorkspacesFormat>JSON.parse(buffer); const json = <IBackupWorkspacesFormat>JSON.parse(buffer);
...@@ -134,16 +136,20 @@ suite('BackupMainService', () => { ...@@ -134,16 +136,20 @@ suite('BackupMainService', () => {
test('service validates backup workspaces on startup and cleans up', done => { test('service validates backup workspaces on startup and cleans up', done => {
// 1) backup workspace path does not exist // 1) backup workspace path does not exist
service.pushWorkspaceBackupPathsSync([fooFile, barFile]); console.log('fooFile :' + fooFile.fsPath);
console.log('barFile :' + barFile.fsPath);
service.registerWindowForBackups(1, false, null, fooFile.fsPath);
service.registerWindowForBackups(2, false, null, barFile.fsPath);
service.loadSync(); service.loadSync();
assert.equal(service.workspaceBackupPaths.length, 0); assert.deepEqual(service.workspaceBackupPaths, []);
// 2) backup workspace path exists with empty contents within // 2) backup workspace path exists with empty contents within
fs.mkdirSync(service.toBackupPath(fooFile.fsPath)); fs.mkdirSync(service.toBackupPath(fooFile.fsPath));
fs.mkdirSync(service.toBackupPath(barFile.fsPath)); fs.mkdirSync(service.toBackupPath(barFile.fsPath));
service.pushWorkspaceBackupPathsSync([fooFile, barFile]); service.registerWindowForBackups(1, false, null, fooFile.fsPath);
service.registerWindowForBackups(2, false, null, barFile.fsPath);
service.loadSync(); service.loadSync();
assert.equal(service.workspaceBackupPaths.length, 0); assert.deepEqual(service.workspaceBackupPaths, []);
assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath))); assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath)));
assert.ok(!fs.exists(service.toBackupPath(barFile.fsPath))); assert.ok(!fs.exists(service.toBackupPath(barFile.fsPath)));
...@@ -152,9 +158,10 @@ suite('BackupMainService', () => { ...@@ -152,9 +158,10 @@ suite('BackupMainService', () => {
fs.mkdirSync(service.toBackupPath(barFile.fsPath)); fs.mkdirSync(service.toBackupPath(barFile.fsPath));
fs.mkdirSync(path.join(service.toBackupPath(fooFile.fsPath), 'file')); fs.mkdirSync(path.join(service.toBackupPath(fooFile.fsPath), 'file'));
fs.mkdirSync(path.join(service.toBackupPath(barFile.fsPath), 'untitled')); fs.mkdirSync(path.join(service.toBackupPath(barFile.fsPath), 'untitled'));
service.pushWorkspaceBackupPathsSync([fooFile, barFile]); service.registerWindowForBackups(1, false, null, fooFile.fsPath);
service.registerWindowForBackups(2, false, null, barFile.fsPath);
service.loadSync(); service.loadSync();
assert.equal(service.workspaceBackupPaths.length, 0); assert.deepEqual(service.workspaceBackupPaths, []);
assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath))); assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath)));
assert.ok(!fs.exists(service.toBackupPath(barFile.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.
先完成此消息的编辑!
想要评论请 注册