diff --git a/spec/fixtures/task-spec-handler.coffee b/spec/fixtures/task-spec-handler.coffee index 6f2e4a470..4115246c2 100644 --- a/spec/fixtures/task-spec-handler.coffee +++ b/spec/fixtures/task-spec-handler.coffee @@ -1,2 +1,3 @@ module.exports = -> + emit("some-event", 1, 2, 3) 'hello' diff --git a/spec/task-spec.coffee b/spec/task-spec.coffee index 90463fd19..403e4650d 100644 --- a/spec/task-spec.coffee +++ b/spec/task-spec.coffee @@ -20,3 +20,26 @@ describe "Task", -> expect(handlerResult).toBe 'hello' expect(childProcess.kill).toHaveBeenCalled() expect(processErrored).toBe false + + it "calls listeners registered with ::on when events are emitted in the task", -> + task = new Task(require.resolve('./fixtures/task-spec-handler')) + + eventSpy = jasmine.createSpy('eventSpy') + task.on("some-event", eventSpy) + + waitsFor (done) -> task.start(done) + + runs -> + expect(eventSpy).toHaveBeenCalledWith(1, 2, 3) + + it "unregisters listeners when the Disposable returned by ::on is disposed", -> + task = new Task(require.resolve('./fixtures/task-spec-handler')) + + eventSpy = jasmine.createSpy('eventSpy') + disposable = task.on("some-event", eventSpy) + disposable.dispose() + + waitsFor (done) -> task.start(done) + + runs -> + expect(eventSpy).not.toHaveBeenCalled()