From 236a18debe51e815f2d81a43d2151c500555abf9 Mon Sep 17 00:00:00 2001 From: Baptiste Fontaine Date: Sun, 13 Mar 2016 01:40:00 +0100 Subject: [PATCH] audit: fix crash when HOMEBREW_NO_GITHUB_API is set Running brew audit --strict --online on a formula with a GitHub homepage/url would crash if HOMEBREW_NO_GITHUB_API is set because GitHub.repository returns `nil` and the audit code assumes it always returns a hash. Closes Homebrew/homebrew#50054. Signed-off-by: Baptiste Fontaine --- Library/Homebrew/cmd/audit.rb | 2 ++ Library/Homebrew/test/test_cmd_audit.rb | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index 9eec5590f5..76702a9676 100644 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -509,6 +509,8 @@ class FormulaAuditor return end + return if metadata.nil? + problem "GitHub fork (not canonical repository)" if metadata["fork"] if (metadata["forks_count"] < 20) && (metadata["subscribers_count"] < 20) && (metadata["stargazers_count"] < 50) diff --git a/Library/Homebrew/test/test_cmd_audit.rb b/Library/Homebrew/test/test_cmd_audit.rb index d030624eda..1f35e33b51 100644 --- a/Library/Homebrew/test/test_cmd_audit.rb +++ b/Library/Homebrew/test/test_cmd_audit.rb @@ -340,4 +340,21 @@ class FormulaAuditorTests < Homebrew::TestCase assert_equal "Please remove default template comments", fa.problems.shift end + + def test_audit_github_repository_no_api + fa = formula_auditor "foo", <<-EOS.undent, :strict => true, :online => true + class Foo < Formula + homepage "https://github.com/example/example" + url "http://example.com/foo-1.0.tgz" + end + EOS + + original_value = ENV["HOMEBREW_NO_GITHUB_API"] + ENV["HOMEBREW_NO_GITHUB_API"] = "1" + + fa.audit_github_repository + assert_equal [], fa.problems + ensure + ENV["HOMEBREW_NO_GITHUB_API"] = original_value + end end