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 "active_support/core_ext/array/conversions"
|
||||
|
||||
require "utils/sorbet"
|
||||
|
||||
require "rubocop-performance"
|
||||
|
@ -135,6 +135,7 @@ module RuboCop
|
||||
end
|
||||
|
||||
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)
|
||||
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]
|
||||
@ -145,16 +146,14 @@ module RuboCop
|
||||
method_type = child.send_type? || child.block_type?
|
||||
next unless method_type
|
||||
|
||||
valid_node ||= child.method_name.to_s == "patch"
|
||||
valid_node ||= child.method_name.to_s == "resource"
|
||||
valid_node ||= child.method_name.to_s == "deprecate!"
|
||||
valid_node ||= child.method_name.to_s == "disable!"
|
||||
valid_node ||= on_os_allowed_methods.include? child.method_name.to_s
|
||||
|
||||
@offensive_node = on_os_block
|
||||
@offense_source_range = on_os_block.source_range
|
||||
unless valid_node
|
||||
problem "`#{on_os_block.method_name}` can only include `depends_on`, `patch` and `resource` nodes."
|
||||
end
|
||||
@offensive_node = child
|
||||
@offense_source_range = child.source_range
|
||||
next if valid_node
|
||||
|
||||
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
|
||||
|
||||
|
@ -390,9 +390,9 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
||||
class Foo < Formula
|
||||
url "https://brew.sh/foo-1.0.tgz"
|
||||
on_macos do
|
||||
^^^^^^^^^^^ `on_macos` can only include `depends_on`, `patch` and `resource` nodes.
|
||||
depends_on "readline"
|
||||
uses_from_macos "ncurses"
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^ `on_macos` cannot include `uses_from_macos`. [...]
|
||||
end
|
||||
end
|
||||
RUBY
|
||||
@ -403,9 +403,9 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
||||
class Foo < Formula
|
||||
url "https://brew.sh/foo-1.0.tgz"
|
||||
on_linux do
|
||||
^^^^^^^^^^^ `on_linux` can only include `depends_on`, `patch` and `resource` nodes.
|
||||
depends_on "readline"
|
||||
uses_from_macos "ncurses"
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^ `on_linux` cannot include `uses_from_macos`. [...]
|
||||
end
|
||||
end
|
||||
RUBY
|
||||
|
Loading…
x
Reference in New Issue
Block a user