From a57b627a58c830ded486ca3f10d8cd4a6a005473 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 12 Jan 2017 20:06:10 -0800 Subject: [PATCH] Re-throw package activation exceptions in test mode --- spec/package-manager-spec.coffee | 8 +++++++- src/package.coffee | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index c2e9e11be..33854a71f 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -546,8 +546,9 @@ describe "PackageManager", -> waitsFor -> activatedPackage? runs -> expect(activatedPackage.name).toBe 'package-with-main' - describe "when the package throws an error while loading", -> + describe "when the package's main module throws an error on load", -> it "adds a notification instead of throwing an exception", -> + spyOn(atom, 'inSpecMode').andReturn(false) atom.config.set("core.disabledPackages", []) addErrorHandler = jasmine.createSpy() atom.notifications.onDidAddNotification(addErrorHandler) @@ -556,6 +557,11 @@ describe "PackageManager", -> expect(addErrorHandler.argsForCall[0][0].message).toContain("Failed to load the package-that-throws-an-exception package") expect(addErrorHandler.argsForCall[0][0].options.packageName).toEqual "package-that-throws-an-exception" + it "re-throws the exception in test mode", -> + atom.config.set("core.disabledPackages", []) + addErrorHandler = jasmine.createSpy() + expect(-> atom.packages.activatePackage("package-that-throws-an-exception")).toThrow("This package throws an exception") + describe "when the package is not found", -> it "rejects the promise", -> atom.config.set("core.disabledPackages", []) diff --git a/src/package.coffee b/src/package.coffee index 9fa2dbe63..63efbf02c 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -711,6 +711,9 @@ class Package incompatibleNativeModules handleError: (message, error) -> + if atom.inSpecMode() + throw error + if error.filename and error.location and (error instanceof SyntaxError) location = "#{error.filename}:#{error.location.first_line + 1}:#{error.location.first_column + 1}" detail = "#{error.message} in #{location}"