Merge pull request #7056 from atom/ks-handle-text-editor-deserialize-read-errors

Catch read errors during deserialization
This commit is contained in:
Kevin Sawicki
2015-06-02 08:51:33 -07:00
2 changed files with 23 additions and 1 deletions

View File

@@ -1,3 +1,6 @@
fs = require 'fs-plus'
path = require 'path'
temp = require 'temp'
clipboard = require '../src/safe-clipboard'
TextEditor = require '../src/text-editor'
@@ -19,6 +22,17 @@ describe "TextEditor", ->
atom.packages.activatePackage('language-javascript')
describe "when the editor is deserialized", ->
it "returns undefined when the path cannot be read", ->
pathToOpen = path.join(temp.mkdirSync(), 'file.txt')
editor1 = null
waitsForPromise ->
atom.project.open(pathToOpen).then (o) -> editor1 = o
runs ->
fs.mkdirSync(pathToOpen)
expect(editor1.testSerialization()).toBeUndefined()
it "restores selections and folds based on markers in the buffer", ->
editor.setSelectedBufferRange([[1, 2], [3, 4]])
editor.addSelectionForBufferRange([[5, 6], [7, 5]], reversed: true)

View File

@@ -128,7 +128,15 @@ class TextEditor extends Model
displayBuffer: @displayBuffer.serialize()
deserializeParams: (params) ->
params.displayBuffer = DisplayBuffer.deserialize(params.displayBuffer)
try
displayBuffer = DisplayBuffer.deserialize(params.displayBuffer)
catch error
if error.syscall is 'read'
return # Error reading the file, don't deserialize an editor for it
else
throw error
params.displayBuffer = displayBuffer
params.registerEditor = true
params