rubocops/caveats: Disallow ANSI escape codes

Formula caveats text appears on formulae.brew.sh but escape
characters, as used in ANSI escape codes, should not appear in HTML.
This commit adds a RuboCop to disallow escape characters in the
caveats text.
This commit is contained in:
Sam Ford 2023-01-16 01:24:23 -05:00
parent 3e257890da
commit a1993b9086
No known key found for this signature in database
GPG Key ID: 7AF5CBEE1DD6F76D
2 changed files with 28 additions and 2 deletions

View File

@ -27,9 +27,11 @@ module RuboCop
class Caveats < FormulaCop
def audit_formula(_node, _class_node, _parent_class_node, _body_node)
caveats_strings.each do |n|
next unless regex_match_group(n, /\bsetuid\b/i)
if regex_match_group(n, /\bsetuid\b/i)
problem "Don't recommend setuid in the caveats, suggest sudo instead."
end
problem "Don't recommend setuid in the caveats, suggest sudo instead."
problem "Don't use ANSI escape codes in the caveats." if regex_match_group(n, /\e/)
end
end
end

View File

@ -19,5 +19,29 @@ describe RuboCop::Cop::FormulaAudit::Caveats do
end
RUBY
end
it "reports an offense if an escape character is present" do
expect_offense(<<~RUBY)
class Foo < Formula
homepage "https://brew.sh/foo"
url "https://brew.sh/foo-1.0.tgz"
def caveats
"\\x1B"
^^^^^^ Don't use ANSI escape codes in the caveats.
end
end
RUBY
expect_offense(<<~RUBY)
class Foo < Formula
homepage "https://brew.sh/foo"
url "https://brew.sh/foo-1.0.tgz"
def caveats
"\\u001b"
^^^^^^^^ Don't use ANSI escape codes in the caveats.
end
end
RUBY
end
end
end