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})
|
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|
|
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,
|
||||||
corrector.replace(patch_url_node.source_range, correct)
|
patch_url_node.source.sub(%r{\A"http://}, '"https://'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return unless regex_match_group(patch_url_node, %r{^http://bugs\.debian\.org})
|
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|
|
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,
|
||||||
corrector.replace(patch_url_node.source_range, correct)
|
patch_url_node.source.sub(%r{\A"http://}, '"https://'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -188,8 +188,6 @@ RSpec.describe RuboCop::Cop::FormulaAudit::Patches do
|
|||||||
patch_urls = [
|
patch_urls = [
|
||||||
"https://raw.github.com/mogaal/sendemail",
|
"https://raw.github.com/mogaal/sendemail",
|
||||||
"https://mirrors.ustc.edu.cn/macports/trunk/",
|
"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://patch-diff.githubusercontent.com/raw/foo/foo-bar/pull/100.patch",
|
||||||
"https://github.com/uber/h3/pull/362.patch?full_index=1",
|
"https://github.com/uber/h3/pull/362.patch?full_index=1",
|
||||||
"https://gitlab.gnome.org/GNOME/gitg/-/merge_requests/142.diff",
|
"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:)
|
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}
|
FormulaAudit/Patches: MacPorts patches should specify a revision instead of trunk: #{patch_url}
|
||||||
EOS
|
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})
|
elsif patch_url.match?(%r{https://github.com/[^/]*/[^/]*/pull})
|
||||||
expect_offense_hash(message: <<~EOS.chomp, severity: :convention, line: 5, column: 8, source:)
|
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}
|
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
|
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
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user