on_macos/on_linux block: improve rubocop message
Co-authored-by: Markus Reiter <me@reitermark.us>
This commit is contained in:
parent
fc921bb640
commit
c4da302303
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
require_relative "load_path"
|
require_relative "load_path"
|
||||||
|
|
||||||
|
require "active_support/core_ext/array/conversions"
|
||||||
|
|
||||||
require "utils/sorbet"
|
require "utils/sorbet"
|
||||||
|
|
||||||
require "rubocop-performance"
|
require "rubocop-performance"
|
||||||
|
@ -135,6 +135,7 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
def check_on_os_block_content(component_precedence_list, on_os_block)
|
def check_on_os_block_content(component_precedence_list, on_os_block)
|
||||||
|
on_os_allowed_methods = %w[depends_on patch resource deprecate! disable!]
|
||||||
_, offensive_node = check_order(component_precedence_list, on_os_block.body)
|
_, offensive_node = check_order(component_precedence_list, on_os_block.body)
|
||||||
component_problem(*offensive_node) if offensive_node
|
component_problem(*offensive_node) if offensive_node
|
||||||
child_nodes = on_os_block.body.begin_type? ? on_os_block.body.child_nodes : [on_os_block.body]
|
child_nodes = on_os_block.body.begin_type? ? on_os_block.body.child_nodes : [on_os_block.body]
|
||||||
@ -145,16 +146,14 @@ module RuboCop
|
|||||||
method_type = child.send_type? || child.block_type?
|
method_type = child.send_type? || child.block_type?
|
||||||
next unless method_type
|
next unless method_type
|
||||||
|
|
||||||
valid_node ||= child.method_name.to_s == "patch"
|
valid_node ||= on_os_allowed_methods.include? child.method_name.to_s
|
||||||
valid_node ||= child.method_name.to_s == "resource"
|
|
||||||
valid_node ||= child.method_name.to_s == "deprecate!"
|
|
||||||
valid_node ||= child.method_name.to_s == "disable!"
|
|
||||||
|
|
||||||
@offensive_node = on_os_block
|
@offensive_node = child
|
||||||
@offense_source_range = on_os_block.source_range
|
@offense_source_range = child.source_range
|
||||||
unless valid_node
|
next if valid_node
|
||||||
problem "`#{on_os_block.method_name}` can only include `depends_on`, `patch` and `resource` nodes."
|
|
||||||
end
|
problem "`#{on_os_block.method_name}` cannot include `#{child.method_name}`. " \
|
||||||
|
"Only #{on_os_allowed_methods.map { |m| "`#{m}`" }.to_sentence} are allowed."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -390,9 +390,9 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
|||||||
class Foo < Formula
|
class Foo < Formula
|
||||||
url "https://brew.sh/foo-1.0.tgz"
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
on_macos do
|
on_macos do
|
||||||
^^^^^^^^^^^ `on_macos` can only include `depends_on`, `patch` and `resource` nodes.
|
|
||||||
depends_on "readline"
|
depends_on "readline"
|
||||||
uses_from_macos "ncurses"
|
uses_from_macos "ncurses"
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^ `on_macos` cannot include `uses_from_macos`. [...]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
RUBY
|
RUBY
|
||||||
@ -403,9 +403,9 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
|||||||
class Foo < Formula
|
class Foo < Formula
|
||||||
url "https://brew.sh/foo-1.0.tgz"
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
on_linux do
|
on_linux do
|
||||||
^^^^^^^^^^^ `on_linux` can only include `depends_on`, `patch` and `resource` nodes.
|
|
||||||
depends_on "readline"
|
depends_on "readline"
|
||||||
uses_from_macos "ncurses"
|
uses_from_macos "ncurses"
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^ `on_linux` cannot include `uses_from_macos`. [...]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
RUBY
|
RUBY
|
||||||
|
Loading…
x
Reference in New Issue
Block a user