style: allow license exceptions to be on one line

This commit is contained in:
Rylan Polster 2020-10-05 16:23:52 -04:00
parent 23e24c6710
commit 38cedb9013
2 changed files with 33 additions and 5 deletions

View File

@ -305,16 +305,20 @@ module RuboCop
def audit_formula(_node, _class_node, _parent_class_node, body_node)
license_node = find_node_method_by_name(body_node, :license)
return unless license_node
return if license_node.source.include?("\n")
license = parameters(license_node).first
return unless license.hash_type?
return unless license.each_descendant(:hash).count.positive?
return if license.source.include?("\n")
parameters(license_node).first.each_descendant(:hash).each do |license_hash|
next if license_exception? license_hash
problem "Split nested license declarations onto multiple lines"
end
end
def_node_matcher :license_exception?, <<~EOS
(hash (pair (sym :with) str))
EOS
end
# This cop checks for other miscellaneous style violations.
#
# @api private

View File

@ -681,6 +681,16 @@ describe RuboCop::Cop::FormulaAudit::Licenses do
RUBY
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
expect_no_offenses(<<~RUBY)
class Foo < Formula
@ -694,6 +704,20 @@ describe RuboCop::Cop::FormulaAudit::Licenses do
RUBY
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
expect_offense(<<~RUBY)
class Foo < Formula