diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index e67e546937..50ed3f2ff3 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -816,6 +816,26 @@ module Homebrew end end + def audit_github_issue_comment + return unless @online + + matches = text.to_s.scan(%r{https://github.com/([-\w_]*)/([-\w_]*)/(pull|issues)/([0-9]*)}) + return unless matches + + matches.each do |match| + owner, repo, type, id = match + + # Do not trigger for self references + next if "#{owner}/#{repo}" == formula.tap.remote_repo || owner == "Homebrew" + + issue = GitHub::API.open_rest("https://api.github.com/repos/#{owner}/#{repo}/issues/#{id}") + next if issue.blank? || issue["state"] == "open" + + issue_url = "https://github.com/#{owner}/#{repo}/#{type}/#{id}" + problem "Formula refers to a GitHub issue or pull request that is closed: #{issue_url}" + end + end + def audit_reverse_migration # Only enforce for new formula being re-added to core return unless @strict diff --git a/Library/Homebrew/formula_text_auditor.rb b/Library/Homebrew/formula_text_auditor.rb index b4bcc52453..5a83ef53f4 100644 --- a/Library/Homebrew/formula_text_auditor.rb +++ b/Library/Homebrew/formula_text_auditor.rb @@ -27,6 +27,10 @@ module Homebrew @text.include? s end + def to_s + @text + end + def line_number(regex, skip = 0) index = @lines.drop(skip).index { |line| line =~ regex } index ? index + 1 : nil