2021-01-31 14:50:29 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require "rubocops/lines"
|
|
|
|
|
2024-02-18 15:11:11 -08:00
|
|
|
RSpec.describe RuboCop::Cop::FormulaAudit::AssertStatements do
|
2021-01-31 14:50:29 -05:00
|
|
|
subject(:cop) { described_class.new }
|
|
|
|
|
|
|
|
context "when auditing formula assertions" do
|
|
|
|
it "reports an offense when assert ... include is used" do
|
|
|
|
expect_offense(<<~RUBY)
|
|
|
|
class Foo < Formula
|
|
|
|
desc "foo"
|
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
|
|
|
assert File.read("inbox").include?("Sample message 1")
|
2023-04-07 17:16:48 +01:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/AssertStatements: Use `assert_match` instead of `assert ...include?`
|
2021-01-31 14:50:29 -05:00
|
|
|
end
|
|
|
|
RUBY
|
|
|
|
end
|
|
|
|
|
|
|
|
it "reports an offense when assert ... exist? is used without a negation" do
|
|
|
|
expect_offense(<<~RUBY)
|
|
|
|
class Foo < Formula
|
|
|
|
desc "foo"
|
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
|
|
|
assert File.exist? "default.ini"
|
2025-02-18 10:51:37 -05:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/AssertStatements: Use `assert_path_exists <path_to_file>` instead of `assert File.exist? "default.ini"`
|
2021-01-31 14:50:29 -05:00
|
|
|
end
|
|
|
|
RUBY
|
|
|
|
end
|
|
|
|
|
|
|
|
it "reports an offense when assert ... exist? is used with a negation" do
|
|
|
|
expect_offense(<<~RUBY)
|
|
|
|
class Foo < Formula
|
|
|
|
desc "foo"
|
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
|
|
|
assert !File.exist?("default.ini")
|
2025-02-18 10:51:37 -05:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/AssertStatements: Use `refute_path_exists <path_to_file>` instead of `assert !File.exist?("default.ini")`
|
2021-01-31 14:50:29 -05:00
|
|
|
end
|
|
|
|
RUBY
|
|
|
|
end
|
|
|
|
|
|
|
|
it "reports an offense when assert ... executable? is used without a negation" do
|
|
|
|
expect_offense(<<~RUBY)
|
|
|
|
class Foo < Formula
|
|
|
|
desc "foo"
|
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
|
|
|
assert File.executable? f
|
2023-04-07 17:16:48 +01:00
|
|
|
^^^^^^^^^^^^^^^^^^ FormulaAudit/AssertStatements: Use `assert_predicate <path_to_file>, :executable?` instead of `assert File.executable? f`
|
2021-01-31 14:50:29 -05:00
|
|
|
end
|
|
|
|
RUBY
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|