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

Also hash untitled file names

Fixes #15941
上级 d59cfe95
......@@ -677,11 +677,7 @@ export class TestBackupFileService implements IBackupFileService {
return TPromise.as(void 0);
}
public getWorkspaceTextFileBackups(): TPromise<URI[]> {
return TPromise.as([]);
}
public getWorkspaceUntitledFileBackups(): TPromise<URI[]> {
public getWorkspaceFileBackups(scheme: string): TPromise<URI[]> {
return TPromise.as([]);
}
......
......@@ -57,18 +57,12 @@ export interface IBackupFileService {
backupResource(resource: Uri, content: string, versionId?: number): TPromise<void>;
/**
* Gets a list of text file backups for the current workspace.
* Gets a list of file backups for the current workspace.
*
* @param scheme The scheme of the backup.
* @return The list of backups.
*/
getWorkspaceTextFileBackups(): TPromise<Uri[]>;
/**
* Gets a list of untitled backups for the current workspace.
*
* @return The list of backups.
*/
getWorkspaceUntitledFileBackups(): TPromise<Uri[]>;
getWorkspaceFileBackups(scheme: string): TPromise<Uri[]>;
/**
* Parses backup raw text content into the content, removing the metadata that is also stored
......
......@@ -182,10 +182,10 @@ export class BackupFileService implements IBackupFileService {
});
}
public getWorkspaceTextFileBackups(): TPromise<Uri[]> {
public getWorkspaceFileBackups(scheme: string): TPromise<Uri[]> {
return this.ready.then(model => {
let readPromises: TPromise<Uri>[] = [];
model.getFilesByScheme('file').forEach(textFile => {
model.getFilesByScheme(scheme).forEach(textFile => {
readPromises.push(new TPromise<Uri>((c, e) => {
readToMatchingString(textFile.fsPath, '\n', 2000, 10000, (error, result) => {
if (result === null) {
......@@ -199,12 +199,6 @@ export class BackupFileService implements IBackupFileService {
});
}
public getWorkspaceUntitledFileBackups(): TPromise<Uri[]> {
return this.ready.then(model => {
return model.getFilesByScheme('untitled');
});
}
public parseBackupContent(rawText: IRawTextContent): string {
return rawText.value.lines.slice(1).join('\n');
}
......@@ -214,8 +208,7 @@ export class BackupFileService implements IBackupFileService {
return null;
}
// Only hash the file path if the file is not untitled
const backupName = resource.scheme === 'untitled' ? resource.fsPath : crypto.createHash('md5').update(resource.fsPath).digest('hex');
const backupName = crypto.createHash('md5').update(resource.fsPath).digest('hex');
const backupPath = path.join(this.backupWorkspacePath, resource.scheme, backupName);
return Uri.file(backupPath);
......
......@@ -57,7 +57,7 @@ suite('BackupFileService', () => {
const untitledFile = Uri.from({ scheme: 'untitled', path: 'Untitled-1' });
const fooBackupPath = path.join(workspaceBackupPath, 'file', crypto.createHash('md5').update(fooFile.fsPath).digest('hex'));
const barBackupPath = path.join(workspaceBackupPath, 'file', crypto.createHash('md5').update(barFile.fsPath).digest('hex'));
const untitledBackupPath = path.join(workspaceBackupPath, 'untitled', untitledFile.fsPath);
const untitledBackupPath = path.join(workspaceBackupPath, 'untitled', crypto.createHash('md5').update(untitledFile.fsPath).digest('hex'));
let service: TestBackupFileService;
......@@ -91,7 +91,8 @@ suite('BackupFileService', () => {
// Format should be: <backupHome>/<workspaceHash>/<scheme>/<filePath>
const backupResource = Uri.from({ scheme: 'untitled', path: 'Untitled-1' });
const workspaceHash = crypto.createHash('md5').update(workspaceResource.fsPath).digest('hex');
const expectedPath = Uri.file(path.join(backupHome, workspaceHash, 'untitled', backupResource.fsPath)).fsPath;
const filePathHash = crypto.createHash('md5').update(backupResource.fsPath).digest('hex');
const expectedPath = Uri.file(path.join(backupHome, workspaceHash, 'untitled', filePathHash)).fsPath;
assert.equal(service.getBackupResource(backupResource).fsPath, expectedPath);
});
......@@ -172,12 +173,12 @@ suite('BackupFileService', () => {
});
});
test('getWorkspaceTextFileBackups - text file', done => {
test('getWorkspaceFileBackups("file") - text file', done => {
service.backupResource(fooFile, `test`).then(() => {
service.getWorkspaceTextFileBackups().then(textFiles => {
service.getWorkspaceFileBackups('file').then(textFiles => {
assert.deepEqual(textFiles.map(f => f.fsPath), [fooFile.fsPath]);
service.backupResource(barFile, `test`).then(() => {
service.getWorkspaceTextFileBackups().then(textFiles => {
service.getWorkspaceFileBackups('file').then(textFiles => {
assert.deepEqual(textFiles.map(f => f.fsPath), [fooFile.fsPath, barFile.fsPath]);
done();
});
......@@ -186,19 +187,19 @@ suite('BackupFileService', () => {
});
});
test('getWorkspaceTextFileBackups - untitled file', done => {
test('getWorkspaceFileBackups("file") - untitled file', done => {
service.backupResource(untitledFile, `test`).then(() => {
service.getWorkspaceTextFileBackups().then(textFiles => {
service.getWorkspaceFileBackups('file').then(textFiles => {
assert.deepEqual(textFiles, []);
done();
});
});
});
test('getWorkspaceUntitledFileBackups - text file', done => {
test('getWorkspaceFileBackups("untitled") - text file', done => {
service.backupResource(fooFile, `test`).then(() => {
service.backupResource(barFile, `test`).then(() => {
service.getWorkspaceUntitledFileBackups().then(textFiles => {
service.getWorkspaceFileBackups('untitled').then(textFiles => {
assert.deepEqual(textFiles, []);
done();
});
......@@ -206,10 +207,10 @@ suite('BackupFileService', () => {
});
});
test('getWorkspaceUntitledFileBackups - untitled file', done => {
test('getWorkspaceFileBackups("untitled") - untitled file', done => {
service.backupResource(untitledFile, `test`).then(() => {
service.getWorkspaceUntitledFileBackups().then(textFiles => {
assert.deepEqual(textFiles.map(f => f.fsPath), [untitledBackupPath]);
service.getWorkspaceFileBackups('untitled').then(textFiles => {
assert.deepEqual(textFiles.map(f => f.fsPath), ['Untitled-1']);
done();
});
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册