diff --git a/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts b/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts index ad3558080b01723909940f65fba2ec441639af9c..0814537cd3923dfd7061a8f0993ce563c4cb039d 100644 --- a/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts +++ b/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts @@ -58,7 +58,7 @@ suite('Files - FileEditorInput', () => { input = instantiationService.createInstance(FileEditorInput, toResource.call(this, '/foo/bar.html'), void 0); - const inputToResolve: any = instantiationService.createInstance(FileEditorInput, toResource.call(this, '/foo/bar/file.js'), void 0); + const inputToResolve = instantiationService.createInstance(FileEditorInput, toResource.call(this, '/foo/bar/file.js'), void 0); const sameOtherInput = instantiationService.createInstance(FileEditorInput, toResource.call(this, '/foo/bar/file.js'), void 0); return inputToResolve.resolve(true).then(resolved => { @@ -69,7 +69,7 @@ suite('Files - FileEditorInput', () => { return sameOtherInput.resolve(true).then(otherResolved => { assert(otherResolved === resolvedModelA); // OK: Resolved Model cached globally per input - inputToResolve.dispose(false); + inputToResolve.dispose(); return inputToResolve.resolve(true).then(resolved => { assert(resolvedModelA === resolved); // Model is still the same because we had 2 clients @@ -82,13 +82,13 @@ suite('Files - FileEditorInput', () => { return inputToResolve.resolve(true).then(resolved => { assert(resolvedModelA !== resolved); // Different instance, because input got disposed - let stat = (resolved).versionOnDiskStat; + let stat = resolved.getStat(); return inputToResolve.resolve(true).then(resolved => { - assert(stat !== (resolved).versionOnDiskStat); // Different stat, because resolve always goes to the server for refresh + assert(stat !== resolved.getStat()); // Different stat, because resolve always goes to the server for refresh - stat = (resolved).versionOnDiskStat; + stat = resolved.getStat(); return inputToResolve.resolve(false).then(resolved => { - assert(stat === (resolved).versionOnDiskStat); // Same stat, because not refreshed + assert(stat === resolved.getStat()); // Same stat, because not refreshed done(); }); diff --git a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts index 9bd96685935899d6f92fb9558284b8da963e2604..e9e361d3b62089735d72e52f9f84ed0e6ac2d488 100644 --- a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts +++ b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts @@ -732,13 +732,6 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil return this.lastSaveAttemptTime; } - /** - * Returns the time in millies when this working copy was last modified by the user or some other program. - */ - public getLastModifiedTime(): number { - return this.lastResolvedDiskStat ? this.lastResolvedDiskStat.mtime : -1; - } - /** * Returns the time in millies when this working copy was last modified by the user or some other program. */ @@ -852,6 +845,13 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil return this.resource; } + /** + * Stat accessor only used by tests. + */ + public getStat(): IFileStat { + return this.lastResolvedDiskStat; + } + public dispose(): void { this.disposed = true; this.inConflictResolutionMode = false; diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts index 0bf4c5633d3380f043af9d51c9e0187fb359a382..00411c57c3a7b1bad9267b634bb2336411da4f13 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts @@ -22,6 +22,12 @@ class ServiceAccessor { } } +function getLastModifiedTime(model: TextFileEditorModel): number { + const stat = model.getStat(); + + return stat ? stat.mtime : -1; +} + suite('Files - TextFileEditorModel', () => { let instantiationService: IInstantiationService; @@ -42,7 +48,7 @@ suite('Files - TextFileEditorModel', () => { model.load().done(() => { model.textEditorModel.setValue('bar'); - assert.ok(model.getLastModifiedTime() <= Date.now()); + assert.ok(getLastModifiedTime(model) <= Date.now()); return model.save().then(() => { assert.ok(model.getLastSaveAttemptTime() <= Date.now()); @@ -60,11 +66,11 @@ suite('Files - TextFileEditorModel', () => { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); model.setEncoding('utf8', EncodingMode.Encode); // no-op - assert.equal(model.getLastModifiedTime(), -1); + assert.equal(getLastModifiedTime(model), -1); model.setEncoding('utf16', EncodingMode.Encode); - assert.ok(model.getLastModifiedTime() <= Date.now()); // indicates model was saved due to encoding change + assert.ok(getLastModifiedTime(model) <= Date.now()); // indicates model was saved due to encoding change model.dispose(); }); @@ -188,7 +194,7 @@ suite('Files - TextFileEditorModel', () => { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); model.load().done(() => { - const mtime = model.getLastModifiedTime(); + const mtime = getLastModifiedTime(model); accessor.textFileService.setResolveTextContentErrorOnce({ message: 'error', fileOperationResult: FileOperationResult.FILE_NOT_MODIFIED_SINCE @@ -196,7 +202,7 @@ suite('Files - TextFileEditorModel', () => { return model.load().then((model: TextFileEditorModel) => { assert.ok(model); - assert.equal(model.getLastModifiedTime(), mtime); + assert.equal(getLastModifiedTime(model), mtime); model.dispose(); done(); @@ -267,8 +273,8 @@ suite('Files - TextFileEditorModel', () => { return input2.resolve().then((model2: TextFileEditorModel) => { model1.textEditorModel.setValue('foo'); - const m1Mtime = model1.getLastModifiedTime(); - const m2Mtime = model2.getLastModifiedTime(); + const m1Mtime = model1.getStat().mtime; + const m2Mtime = model2.getStat().mtime; assert.ok(m1Mtime > 0); assert.ok(m2Mtime > 0); @@ -283,8 +289,8 @@ suite('Files - TextFileEditorModel', () => { accessor.textFileService.saveAll().then(() => { assert.ok(!accessor.textFileService.isDirty(toResource.call(this, '/path/index_async.txt'))); assert.ok(!accessor.textFileService.isDirty(toResource.call(this, '/path/index_async2.txt'))); - assert.ok(model1.getLastModifiedTime() > m1Mtime); - assert.ok(model2.getLastModifiedTime() > m2Mtime); + assert.ok(model1.getStat().mtime > m1Mtime); + assert.ok(model2.getStat().mtime > m2Mtime); assert.ok(model1.getLastSaveAttemptTime() > m1Mtime); assert.ok(model2.getLastSaveAttemptTime() > m2Mtime);