Merge pull request #20404 from Homebrew/rubocops_patches_corrector_tests
patches audit: add tests for patches corrector
This commit is contained in:
		
						commit
						2992b7f519
					
				@ -100,16 +100,16 @@ module RuboCop
 | 
			
		||||
 | 
			
		||||
          if regex_match_group(patch_url_node, %r{^http://trac\.macports\.org})
 | 
			
		||||
            problem "Patches from MacPorts Trac should be https://, not http: #{patch_url}" do |corrector|
 | 
			
		||||
              correct = patch_url_node.source.gsub(%r{^http://}, "https://")
 | 
			
		||||
              corrector.replace(patch_url_node.source_range, correct)
 | 
			
		||||
              corrector.replace(patch_url_node.source_range,
 | 
			
		||||
                                patch_url_node.source.sub(%r{\A"http://}, '"https://'))
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          return unless regex_match_group(patch_url_node, %r{^http://bugs\.debian\.org})
 | 
			
		||||
 | 
			
		||||
          problem "Patches from Debian should be https://, not http: #{patch_url}" do |corrector|
 | 
			
		||||
            correct = patch_url_node.source.gsub(%r{^http://}, "https://")
 | 
			
		||||
            corrector.replace(patch_url_node.source_range, correct)
 | 
			
		||||
            corrector.replace(patch_url_node.source_range,
 | 
			
		||||
                              patch_url_node.source.sub(%r{\A"http://}, '"https://'))
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -188,8 +188,6 @@ RSpec.describe RuboCop::Cop::FormulaAudit::Patches do
 | 
			
		||||
      patch_urls = [
 | 
			
		||||
        "https://raw.github.com/mogaal/sendemail",
 | 
			
		||||
        "https://mirrors.ustc.edu.cn/macports/trunk/",
 | 
			
		||||
        "http://trac.macports.org/export/102865/trunk/dports/mail/uudeview/files/inews.c.patch",
 | 
			
		||||
        "http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-libunac1.txt;att=1;bug=623340",
 | 
			
		||||
        "https://patch-diff.githubusercontent.com/raw/foo/foo-bar/pull/100.patch",
 | 
			
		||||
        "https://github.com/uber/h3/pull/362.patch?full_index=1",
 | 
			
		||||
        "https://gitlab.gnome.org/GNOME/gitg/-/merge_requests/142.diff",
 | 
			
		||||
@ -216,14 +214,6 @@ RSpec.describe RuboCop::Cop::FormulaAudit::Patches do
 | 
			
		||||
          expect_offense_hash(message: <<~EOS.chomp, severity: :convention, line: 5, column: 8, source:)
 | 
			
		||||
            FormulaAudit/Patches: MacPorts patches should specify a revision instead of trunk: #{patch_url}
 | 
			
		||||
          EOS
 | 
			
		||||
        elsif patch_url.start_with?("http://trac.macports.org/")
 | 
			
		||||
          expect_offense_hash(message: <<~EOS.chomp, severity: :convention, line: 5, column: 8, source:)
 | 
			
		||||
            FormulaAudit/Patches: Patches from MacPorts Trac should be https://, not http: #{patch_url}
 | 
			
		||||
          EOS
 | 
			
		||||
        elsif patch_url.start_with?("http://bugs.debian.org/")
 | 
			
		||||
          expect_offense_hash(message: <<~EOS.chomp, severity: :convention, line: 5, column: 8, source:)
 | 
			
		||||
            FormulaAudit/Patches: Patches from Debian should be https://, not http: #{patch_url}
 | 
			
		||||
          EOS
 | 
			
		||||
        elsif patch_url.match?(%r{https://github.com/[^/]*/[^/]*/pull})
 | 
			
		||||
          expect_offense_hash(message: <<~EOS.chomp, severity: :convention, line: 5, column: 8, source:)
 | 
			
		||||
            FormulaAudit/Patches: Use a commit hash URL rather than an unstable pull request URL: #{patch_url}
 | 
			
		||||
@ -257,4 +247,75 @@ RSpec.describe RuboCop::Cop::FormulaAudit::Patches do
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context "when auditing auditing external patches with corrector" do
 | 
			
		||||
    it "corrects Bitbucket patch URLs to use API format" do
 | 
			
		||||
      expect_offense(<<~RUBY)
 | 
			
		||||
        class Foo < Formula
 | 
			
		||||
          url "https://brew.sh/foo-1.0.tgz"
 | 
			
		||||
          patch do
 | 
			
		||||
            url "https://bitbucket.org/multicoreware/x265_git/commits/b354c009a60bcd6d7fc04014e200a1ee9c45c167/raw"
 | 
			
		||||
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Patches: Bitbucket patches should use the API URL: https://api.bitbucket.org/2.0/repositories/multicoreware/x265_git/diff/b354c009a60bcd6d7fc04014e200a1ee9c45c167
 | 
			
		||||
            sha256 "63376b8fdd6613a91976106d9376069274191860cd58f039b29ff16de1925621"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
 | 
			
		||||
      expect_correction(<<~RUBY)
 | 
			
		||||
        class Foo < Formula
 | 
			
		||||
          url "https://brew.sh/foo-1.0.tgz"
 | 
			
		||||
          patch do
 | 
			
		||||
            url "https://api.bitbucket.org/2.0/repositories/multicoreware/x265_git/diff/b354c009a60bcd6d7fc04014e200a1ee9c45c167"
 | 
			
		||||
            sha256 "63376b8fdd6613a91976106d9376069274191860cd58f039b29ff16de1925621"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "corrects HTTP MacPorts Trac URLs to HTTPS" do
 | 
			
		||||
      expect_offense(<<~RUBY)
 | 
			
		||||
        class Foo < Formula
 | 
			
		||||
          url "https://brew.sh/foo-1.0.tgz"
 | 
			
		||||
          patch do
 | 
			
		||||
            url "http://trac.macports.org/export/102865/trunk/dports/mail/uudeview/files/inews.c.patch"
 | 
			
		||||
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Patches: Patches from MacPorts Trac should be https://, not http: http://trac.macports.org/export/102865/trunk/dports/mail/uudeview/files/inews.c.patch
 | 
			
		||||
            sha256 "63376b8fdd6613a91976106d9376069274191860cd58f039b29ff16de1925621"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
 | 
			
		||||
      expect_correction(<<~RUBY)
 | 
			
		||||
        class Foo < Formula
 | 
			
		||||
          url "https://brew.sh/foo-1.0.tgz"
 | 
			
		||||
          patch do
 | 
			
		||||
            url "https://trac.macports.org/export/102865/trunk/dports/mail/uudeview/files/inews.c.patch"
 | 
			
		||||
            sha256 "63376b8fdd6613a91976106d9376069274191860cd58f039b29ff16de1925621"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "corrects HTTP Debian bug URLs to HTTPS" do
 | 
			
		||||
      expect_offense(<<~RUBY)
 | 
			
		||||
        class Foo < Formula
 | 
			
		||||
          url "https://brew.sh/foo-1.0.tgz"
 | 
			
		||||
          patch do
 | 
			
		||||
            url "http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-libunac1.txt;att=1;bug=623340"
 | 
			
		||||
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Patches: Patches from Debian should be https://, not http: http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-libunac1.txt;att=1;bug=623340
 | 
			
		||||
            sha256 "63376b8fdd6613a91976106d9376069274191860cd58f039b29ff16de1925621"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
 | 
			
		||||
      expect_correction(<<~RUBY)
 | 
			
		||||
        class Foo < Formula
 | 
			
		||||
          url "https://brew.sh/foo-1.0.tgz"
 | 
			
		||||
          patch do
 | 
			
		||||
            url "https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-libunac1.txt;att=1;bug=623340"
 | 
			
		||||
            sha256 "63376b8fdd6613a91976106d9376069274191860cd58f039b29ff16de1925621"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user