style: allow license exceptions to be on one line
This commit is contained in:
parent
23e24c6710
commit
38cedb9013
@ -305,16 +305,20 @@ module RuboCop
|
|||||||
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
||||||
license_node = find_node_method_by_name(body_node, :license)
|
license_node = find_node_method_by_name(body_node, :license)
|
||||||
return unless license_node
|
return unless license_node
|
||||||
|
return if license_node.source.include?("\n")
|
||||||
|
|
||||||
license = parameters(license_node).first
|
parameters(license_node).first.each_descendant(:hash).each do |license_hash|
|
||||||
return unless license.hash_type?
|
next if license_exception? license_hash
|
||||||
return unless license.each_descendant(:hash).count.positive?
|
|
||||||
return if license.source.include?("\n")
|
|
||||||
|
|
||||||
problem "Split nested license declarations onto multiple lines"
|
problem "Split nested license declarations onto multiple lines"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def_node_matcher :license_exception?, <<~EOS
|
||||||
|
(hash (pair (sym :with) str))
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
# This cop checks for other miscellaneous style violations.
|
# This cop checks for other miscellaneous style violations.
|
||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
|
|||||||
@ -681,6 +681,16 @@ describe RuboCop::Cop::FormulaAudit::Licenses do
|
|||||||
RUBY
|
RUBY
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "allow license exceptions" do
|
||||||
|
expect_no_offenses(<<~RUBY)
|
||||||
|
class Foo < Formula
|
||||||
|
desc "foo"
|
||||||
|
url 'https://brew.sh/foo-1.0.tgz'
|
||||||
|
license "MIT" => { with: "LLVM-exception" }
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
it "allow multiline nested license hashes" do
|
it "allow multiline nested license hashes" do
|
||||||
expect_no_offenses(<<~RUBY)
|
expect_no_offenses(<<~RUBY)
|
||||||
class Foo < Formula
|
class Foo < Formula
|
||||||
@ -694,6 +704,20 @@ describe RuboCop::Cop::FormulaAudit::Licenses do
|
|||||||
RUBY
|
RUBY
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "allow multiline nested license hashes with exceptions" do
|
||||||
|
expect_no_offenses(<<~RUBY)
|
||||||
|
class Foo < Formula
|
||||||
|
desc "foo"
|
||||||
|
url 'https://brew.sh/foo-1.0.tgz'
|
||||||
|
license any_of: [
|
||||||
|
"MIT",
|
||||||
|
all_of: ["0BSD", "Zlib"],
|
||||||
|
"GPL-2.0-only" => { with: "LLVM-exception" },
|
||||||
|
]
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
it "require multiple lines for nested license hashes" do
|
it "require multiple lines for nested license hashes" do
|
||||||
expect_offense(<<~RUBY)
|
expect_offense(<<~RUBY)
|
||||||
class Foo < Formula
|
class Foo < Formula
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user