diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index 7e766f0d9..d117683c3 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -19,6 +19,10 @@ describe "the `atom` global", -> expect(object.data).toBe 5 expect(pack.activateStylesheets).toHaveBeenCalled() + it "continues if the package fails to load", -> + config.set("core.disabledPackages", []) + expect(-> atom.loadPackage("package-that-throws-on-load")).not.toThrow() + describe ".unloadPackage(name)", -> describe "when the package is active", -> it "throws an error", -> diff --git a/spec/fixtures/packages/package-that-throws-on-load/package.json b/spec/fixtures/packages/package-that-throws-on-load/package.json new file mode 100644 index 000000000..e420fe4d2 --- /dev/null +++ b/spec/fixtures/packages/package-that-throws-on-load/package.json @@ -0,0 +1 @@ +INVALID diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 3b9253085..79968f494 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -63,7 +63,7 @@ beforeEach -> config.set "editor.fontFamily", "Courier" config.set "editor.fontSize", 16 config.set "editor.autoIndent", false - config.set "core.disabledPackages", ["package-that-throws-an-exception"] + config.set "core.disabledPackages", ["package-that-throws-an-exception", "package-that-throws-on-load"] config.save.reset() atom.config = config window.config = config diff --git a/src/package-manager.coffee b/src/package-manager.coffee index a2f026b2d..25491d4d8 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -66,8 +66,9 @@ class PackageManager if packagePath = @resolvePackagePath(name) return pack if pack = @getLoadedPackage(name) + pack = Package.load(packagePath, options) - if pack.metadata.theme + if pack.metadata?.theme atom.themes.register(pack) else @loadedPackages[pack.name] = pack