style: forbid url do
blocks in homebrew/cask
This commit is contained in:
parent
4deb9dff97
commit
18147a6a1e
@ -26,6 +26,8 @@ module RuboCop
|
||||
|
||||
return unless block_node.cask_block?
|
||||
|
||||
@file_path = processed_source.file_path
|
||||
|
||||
cask_block = RuboCop::Cask::AST::CaskBlock.new(block_node, comments)
|
||||
on_cask(cask_block)
|
||||
end
|
||||
@ -39,6 +41,13 @@ module RuboCop
|
||||
inner_nodes = block_contents.map(&:child_nodes).flatten.select(&:send_type?)
|
||||
inner_nodes.map { |n| RuboCop::Cask::AST::Stanza.new(n, comments) }
|
||||
end
|
||||
|
||||
sig { returns(T.nilable(String)) }
|
||||
def cask_tap
|
||||
return unless (match_obj = @file_path.match(%r{/(homebrew-\w+)/}))
|
||||
|
||||
match_obj[1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -26,7 +26,12 @@ module RuboCop
|
||||
include UrlHelper
|
||||
|
||||
def on_url_stanza(stanza)
|
||||
return if stanza.stanza_node.block_type?
|
||||
if stanza.stanza_node.block_type?
|
||||
if cask_tap == "homebrew-cask"
|
||||
add_offense(stanza.stanza_node, message: 'Do not use `url "..." do` blocks in Homebrew/homebrew-cask.')
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
url_stanza = stanza.stanza_node.first_argument
|
||||
hash_node = stanza.stanza_node.last_argument
|
||||
|
@ -3,6 +3,45 @@
|
||||
require "rubocops/rubocop-cask"
|
||||
|
||||
RSpec.describe RuboCop::Cop::Cask::Url, :config do
|
||||
it "allows regular `url` blocks in homebrew-cask" do
|
||||
expect_no_offenses <<~CASK, "/homebrew-cask/Casks/f/foo.rb"
|
||||
cask "foo" do
|
||||
url "https://example.com/download/foo-v1.2.0.dmg",
|
||||
verified: "example.com/download/"
|
||||
end
|
||||
CASK
|
||||
end
|
||||
|
||||
it "does not allow `url do` blocks in homebrew-cask" do
|
||||
expect_offense <<~CASK, "/homebrew-cask/Casks/f/foo.rb"
|
||||
cask "foo" do
|
||||
url "https://example.com/download/foo-v1.2.0.dmg" do |url|
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Do not use `url "..." do` blocks in Homebrew/homebrew-cask.
|
||||
url
|
||||
end
|
||||
end
|
||||
CASK
|
||||
end
|
||||
|
||||
it "allows regular `url` blocks in a non-homebrew-cask tap" do
|
||||
expect_no_offenses <<~CASK, "/homebrew-tap/Casks/f/foo.rb"
|
||||
cask "foo" do
|
||||
url "https://example.com/download/foo-v1.2.0.dmg",
|
||||
verified: "example.com/download/"
|
||||
end
|
||||
CASK
|
||||
end
|
||||
|
||||
it "allows `url do` blocks in a non-homebrew-cask tap" do
|
||||
expect_no_offenses <<~CASK, "/homebrew-tap/Casks/f/foo.rb"
|
||||
cask "foo" do
|
||||
url "https://example.com/download/foo-v1.2.0.dmg" do |url|
|
||||
url
|
||||
end
|
||||
end
|
||||
CASK
|
||||
end
|
||||
|
||||
it "accepts a `verified` value that does not start with a protocol" do
|
||||
expect_no_offenses <<~CASK
|
||||
cask "foo" do
|
||||
|
Loading…
x
Reference in New Issue
Block a user