diff --git a/spec/project-spec.coffee b/spec/project-spec.coffee index 32022ca98..9c4f8571e 100644 --- a/spec/project-spec.coffee +++ b/spec/project-spec.coffee @@ -37,6 +37,19 @@ describe "Project", -> deserializedProject.getBuffers()[0].destroy() expect(deserializedProject.getBuffers().length).toBe 0 + + it "does not deserialize buffers when the path is a directory", -> + pathToOpen = path.join(temp.mkdirSync(), 'file.txt') + + waitsForPromise -> + atom.project.open(pathToOpen) + + runs -> + expect(atom.project.getBuffers().length).toBe 1 + fs.mkdirSync(pathToOpen) + deserializedProject = atom.project.testSerialization() + expect(deserializedProject.getBuffers().length).toBe 0 + describe "when an editor is saved and the project has no path", -> it "sets the project's path to the saved file's parent directory", -> tempFile = temp.openSync().path diff --git a/src/project.coffee b/src/project.coffee index e36d954c7..6f71873af 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -66,7 +66,12 @@ class Project extends Model buffers: _.compact(@buffers.map (buffer) -> buffer.serialize() if buffer.isRetained()) deserializeParams: (params) -> - params.buffers = params.buffers.map (bufferState) -> atom.deserializers.deserialize(bufferState) + params.buffers = _.compact params.buffers.map (bufferState) -> + try + atom.deserializers.deserialize(bufferState) + catch error + # Ignore buffers for files that are now folders + throw error unless error.code is 'EISDIR' params