From 3dd9253bc56e6c819e17f0455b8b5cee8a6a5652 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Thu, 28 Jun 2012 13:04:36 -0700 Subject: [PATCH] When Buffer's path changes, stop listening for events on former path --- spec/app/buffer-spec.coffee | 20 ++++++++++++++++++++ src/app/buffer.coffee | 1 + 2 files changed, 21 insertions(+) diff --git a/spec/app/buffer-spec.coffee b/spec/app/buffer-spec.coffee index 0b6ccb40b..460af7e8f 100644 --- a/spec/app/buffer-spec.coffee +++ b/spec/app/buffer-spec.coffee @@ -478,3 +478,23 @@ describe 'Buffer', -> expect(buffer.positionForCharacterIndex(30)).toEqual [1, 0] expect(buffer.positionForCharacterIndex(61)).toEqual [2, 0] expect(buffer.positionForCharacterIndex(408)).toEqual [12, 2] + + describe ".setPath(path)", -> + [path, newPath] = [] + beforeEach -> + path = fs.join(require.resolve('fixtures'), "tmp.txt") + fs.write(path, "first") + + afterEach -> + fs.remove(path) + + it "stops listening to events on previous path and begins listening to events on new path", -> + buffer = new Buffer(path) + changeHandler = jasmine.createSpy('changeHandler') + buffer.on 'change', changeHandler + buffer.setPath(filePath) + expect(changeHandler).not.toHaveBeenCalled() + + fs.write(path, "should not trigger buffer event") + waits 20 + runs -> expect(changeHandler).not.toHaveBeenCalled() diff --git a/src/app/buffer.coffee b/src/app/buffer.coffee index b975152ed..ff6265a0d 100644 --- a/src/app/buffer.coffee +++ b/src/app/buffer.coffee @@ -35,6 +35,7 @@ class Buffer null setPath: (path) -> + @file?.off() @file = new File(path) @file.on "contents-change", => @setText(fs.read(@file.getPath())) unless @isModified()