From 75da205b0a49a87ccbd84f4cfcc7c63bb96ade99 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Sun, 27 Jan 2013 22:26:45 -0800 Subject: [PATCH] Terminate worker when all snippets have been loaded --- src/packages/snippets/spec/snippets-spec.coffee | 12 ++++++++++++ src/packages/snippets/src/load-snippets-task.coffee | 1 + src/stdlib/task.coffee | 3 +++ 3 files changed, 16 insertions(+) diff --git a/src/packages/snippets/spec/snippets-spec.coffee b/src/packages/snippets/spec/snippets-spec.coffee index 367fcd07b..872bd25f1 100644 --- a/src/packages/snippets/spec/snippets-spec.coffee +++ b/src/packages/snippets/spec/snippets-spec.coffee @@ -255,6 +255,18 @@ describe "Snippets extension", -> expect(console.warn).toHaveBeenCalled() expect(console.warn.calls.length).toBe 1 + it "terminates the worker when loading completes", -> + jasmine.unspy(LoadSnippetsTask.prototype, 'loadAtomSnippets') + spyOn(Worker.prototype, 'terminate').andCallThrough() + snippets.loaded = false + snippets.loadAll() + + waitsFor "all snippets to load", 5000, -> snippets.loaded + + runs -> + expect(Worker.prototype.terminate).toHaveBeenCalled() + expect(Worker.prototype.terminate.calls.length).toBe 1 + describe "Snippet body parser", -> it "breaks a snippet body into lines, with each line containing tab stops at the appropriate position", -> bodyTree = snippets.getBodyParser().parse """ diff --git a/src/packages/snippets/src/load-snippets-task.coffee b/src/packages/snippets/src/load-snippets-task.coffee index 17c24a993..bbef9d681 100644 --- a/src/packages/snippets/src/load-snippets-task.coffee +++ b/src/packages/snippets/src/load-snippets-task.coffee @@ -13,6 +13,7 @@ class LoadSnippetsTask extends Task loadNextPackageSnippets: -> unless @packages.length + @terminate() @snippets.loaded = true return diff --git a/src/stdlib/task.coffee b/src/stdlib/task.coffee index 3a2f981f4..463c806bb 100644 --- a/src/stdlib/task.coffee +++ b/src/stdlib/task.coffee @@ -30,3 +30,6 @@ class Task postMessage: (data) -> @worker.postMessage(data) + + terminate: -> + @worker.terminate()