From df8e03017489f521d3dc39696708f502c254ba69 Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Tue, 12 Jan 2021 16:54:53 +1100 Subject: [PATCH] rubocops/patches: use rubocop v1 API --- Library/Homebrew/rubocops/patches.rb | 3 +- .../Homebrew/test/rubocops/patches_spec.rb | 52 +++++++++---------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/Library/Homebrew/rubocops/patches.rb b/Library/Homebrew/rubocops/patches.rb index 4471a18566..10692a497f 100644 --- a/Library/Homebrew/rubocops/patches.rb +++ b/Library/Homebrew/rubocops/patches.rb @@ -8,6 +8,7 @@ module RuboCop module Cop module FormulaAudit # This cop audits `patch`es in formulae. + # TODO: Many of these could be auto-corrected. class Patches < FormulaCop extend T::Sig @@ -26,7 +27,7 @@ module RuboCop if inline_patches.empty? && patch_end? offending_patch_end_node(node) - problem "patch is missing 'DATA'" + add_offense(@offense_source_range, message: "patch is missing 'DATA'") end patches_node = find_method_def(body, :patches) diff --git a/Library/Homebrew/test/rubocops/patches_spec.rb b/Library/Homebrew/test/rubocops/patches_spec.rb index 6dc31fa92f..df785e9a25 100644 --- a/Library/Homebrew/test/rubocops/patches_spec.rb +++ b/Library/Homebrew/test/rubocops/patches_spec.rb @@ -7,7 +7,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do subject(:cop) { described_class.new } context "When auditing legacy patches" do - it "When there is no legacy patch" do + it "reports no offenses when there is no legacy patch" do expect_no_offenses(<<~RUBY) class Foo < Formula url 'https://brew.sh/foo-1.0.tgz' @@ -15,7 +15,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do RUBY end - it "Formula with `def patches`" do + it "reports an offense if `def patches` is present" do expect_offense(<<~RUBY) class Foo < Formula homepage "ftp://brew.sh/foo" @@ -28,7 +28,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do RUBY end - it "Patch URLs" do + it "reports an offense for various patch URLs" do patch_urls = [ "https://raw.github.com/mogaal/sendemail", "https://mirrors.ustc.edu.cn/macports/trunk/", @@ -48,7 +48,6 @@ describe RuboCop::Cop::FormulaAudit::Patches do end EOS - inspect_source(source) expected_offense = if patch_url.include?("/raw.github.com/") [{ message: <<~EOS.chomp, @@ -57,7 +56,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 12, + column: 4, source: source }] elsif patch_url.include?("macports/trunk") [{ message: @@ -67,7 +66,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 33, + column: 4, source: source }] elsif patch_url.start_with?("http://trac.macports.org") [{ message: @@ -77,7 +76,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 5, + column: 4, source: source }] elsif patch_url.start_with?("http://bugs.debian.org") [{ message: @@ -87,7 +86,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 5, + column: 4, source: source }] # rubocop:disable Layout/LineLength elsif patch_url.match?(%r{https?://patch-diff\.githubusercontent\.com/raw/(.+)/(.+)/pull/(.+)\.(?:diff|patch)}) @@ -95,7 +94,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do [{ message: "Use a commit hash URL rather than patch-diff: #{patch_url}", severity: :convention, line: 5, - column: 5, + column: 4, source: source }] elsif patch_url.match?(%r{https?://github\.com/.+/.+/(?:commit|pull)/[a-fA-F0-9]*.(?:patch|diff)}) [{ message: @@ -105,10 +104,10 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 5, + column: 4, source: source }] end - expected_offense.zip([cop.offenses.last]).each do |expected, actual| + expected_offense.zip([inspect_source(source).last]).each do |expected, actual| expect(actual.message).to eq(expected[:message]) expect(actual.severity).to eq(expected[:severity]) expect(actual.line).to eq(expected[:line]) @@ -117,7 +116,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do end end - it "Formula with nested `def patches`" do + it "reports an offense with nested `def patches`" do source = <<~RUBY class Foo < Formula homepage "ftp://brew.sh/foo" @@ -144,12 +143,10 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 8, - column: 26, + column: 25, source: source }] - inspect_source(source) - - expected_offenses.zip(cop.offenses).each do |expected, actual| + expected_offenses.zip(inspect_source(source)).each do |expected, actual| expect(actual.message).to eq(expected[:message]) expect(actual.severity).to eq(expected[:severity]) expect(actual.line).to eq(expected[:line]) @@ -206,7 +203,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do end context "When auditing external patches" do - it "Patch URLs" do + it "reports an offense for various patch URLs" do patch_urls = [ "https://raw.github.com/mogaal/sendemail", "https://mirrors.ustc.edu.cn/macports/trunk/", @@ -230,7 +227,6 @@ describe RuboCop::Cop::FormulaAudit::Patches do end RUBY - inspect_source(source) expected_offense = if patch_url.include?("/raw.github.com/") [{ message: <<~EOS.chomp, @@ -239,7 +235,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 16, + column: 8, source: source }] elsif patch_url.include?("macports/trunk") [{ message: @@ -249,7 +245,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 37, + column: 8, source: source }] elsif patch_url.start_with?("http://trac.macports.org") [{ message: @@ -259,7 +255,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 9, + column: 8, source: source }] elsif patch_url.start_with?("http://bugs.debian.org") [{ message: @@ -269,19 +265,19 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 9, + column: 8, source: source }] elsif patch_url.match?(%r{https://github.com/[^/]*/[^/]*/pull}) [{ message: "Use a commit hash URL rather than an unstable pull request URL: #{patch_url}", severity: :convention, line: 5, - column: 9, + column: 8, source: source }] elsif patch_url.match?(%r{.*gitlab.*/merge_request.*}) [{ message: "Use a commit hash URL rather than an unstable merge request URL: #{patch_url}", severity: :convention, line: 5, - column: 9, + column: 8, source: source }] elsif patch_url.match?(%r{https://github.com/[^/]*/[^/]*/commit/}) [{ message: @@ -291,7 +287,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 9, + column: 8, source: source }] elsif patch_url.match?(%r{.*gitlab.*/commit/}) [{ message: @@ -301,7 +297,7 @@ describe RuboCop::Cop::FormulaAudit::Patches do EOS severity: :convention, line: 5, - column: 9, + column: 8, source: source }] # rubocop:disable Layout/LineLength elsif patch_url.match?(%r{https?://patch-diff\.githubusercontent\.com/raw/(.+)/(.+)/pull/(.+)\.(?:diff|patch)}) @@ -309,10 +305,10 @@ describe RuboCop::Cop::FormulaAudit::Patches do [{ message: "Use a commit hash URL rather than patch-diff: #{patch_url}", severity: :convention, line: 5, - column: 9, + column: 8, source: source }] end - expected_offense.zip([cop.offenses.last]).each do |expected, actual| + expected_offense.zip([inspect_source(source).last]).each do |expected, actual| expect(actual.message).to eq(expected[:message]) expect(actual.severity).to eq(expected[:severity]) expect(actual.line).to eq(expected[:line])