From d7378f0d6a8967db94020fe59bface644283341a Mon Sep 17 00:00:00 2001 From: Andres Suarez Date: Mon, 25 Jul 2016 21:56:50 -0700 Subject: [PATCH] Cleanup activationHookSubscriptions when deactivating package Released under CC0. --- spec/package-manager-spec.coffee | 21 +++++++++++++++++++++ src/package.coffee | 1 + 2 files changed, 22 insertions(+) diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index f68005cf5..43e21eeff 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -431,6 +431,27 @@ describe "PackageManager", -> runs -> expect(Package.prototype.requireMainModule.callCount).toBe 1 + it "does not double register activation hooks when deactivating and reactivating", -> + expect(mainModule.activate.callCount).toBe 0 + atom.packages.triggerActivationHook('language-fictitious:grammar-used') + atom.packages.triggerDeferredActivationHooks() + + waitsForPromise -> + promise + + runs -> + expect(mainModule.activate.callCount).toBe 1 + atom.packages.deactivatePackage('package-with-activation-hooks') + promise = atom.packages.activatePackage('package-with-activation-hooks') + atom.packages.triggerActivationHook('language-fictitious:grammar-used') + atom.packages.triggerDeferredActivationHooks() + + waitsForPromise -> + promise + + runs -> + expect(mainModule.activate.callCount).toBe 2 + it "activates the package immediately when activationHooks is empty", -> mainModule = require './fixtures/packages/package-with-empty-activation-hooks/index' spyOn(mainModule, 'activate').andCallThrough() diff --git a/src/package.coffee b/src/package.coffee index 1bb8a939c..2ef98cf70 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -388,6 +388,7 @@ class Package @activationPromise = null @resolveActivationPromise = null @activationCommandSubscriptions?.dispose() + @activationHookSubscriptions?.dispose() @configSchemaRegisteredOnActivate = false @deactivateResources() @deactivateKeymaps()