From b7dddeebfe71f710cf495ed7d34e16d4a238df5d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 7 May 2015 13:23:14 -0700 Subject: [PATCH] Guard against no hosted git info Closes #6693 --- .../package-with-invalid-url-package-json/package.json | 4 ++++ spec/package-manager-spec.coffee | 4 ++++ src/package.coffee | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/packages/package-with-invalid-url-package-json/package.json diff --git a/spec/fixtures/packages/package-with-invalid-url-package-json/package.json b/spec/fixtures/packages/package-with-invalid-url-package-json/package.json new file mode 100644 index 000000000..cc119ffaa --- /dev/null +++ b/spec/fixtures/packages/package-with-invalid-url-package-json/package.json @@ -0,0 +1,4 @@ +{ + "name": "package-with-invalid-url-package-json", + "repository": "foo" +} diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index ebdd1f57a..92dc21a13 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -46,6 +46,10 @@ describe "PackageManager", -> expect(metadata.repository.type).toBe "git" expect(metadata.repository.url).toBe "https://github.com/example/repo.git" + {metadata} = atom.packages.loadPackage("package-with-invalid-url-package-json") + expect(metadata.repository.type).toBe "git" + expect(metadata.repository.url).toBe "foo" + it "returns null if the package is not found in any package directory", -> spyOn(console, 'warn') expect(atom.packages.loadPackage("this-package-cannot-be-found")).toBeNull() diff --git a/src/package.coffee b/src/package.coffee index 05be6c79f..8f5baf44a 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -34,7 +34,7 @@ class Package repoUrl = metadata.repository?.url if repoUrl info = hostedGitInfo.fromUrl(repoUrl) - if info.getDefaultRepresentation() is 'shortcut' + if info?.getDefaultRepresentation() is 'shortcut' metadata.repository.url = info.https().replace(/^git\+/, '') @loadMetadata: (packagePath, ignoreErrors=false) ->