Class: RuboCop::Cop::Minitest::AssertEmptyLiteral
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Minitest::AssertEmptyLiteral
- Extended by:
- AutoCorrector
- Includes:
- ArgumentRangeHelper
- Defined in:
- lib/rubocop/cop/minitest/assert_empty_literal.rb
Overview
Enforces the test to use assert_empty
instead of using assert_equal([], object) or assert_equal({}, object).
NOTE: Using assert_empty makes it impossible to indicate that the expected value is
the literal [] or {}. Since this removes the ability to express the difference
between those literals, it is disabled by default in consideration of that drawback.
Since the role of replacing the originally intended assert([], empty_list) with
assert_equal([], empty_list) is handled by Minitest/AssertWithExpectedArgumentTest,
this cop may be removed in the future.
Constant Summary collapse
- MSG =
'Prefer using `assert_empty(%<arguments>s)`.'- RESTRICT_ON_SEND =
%i[assert_equal].freeze
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rubocop/cop/minitest/assert_empty_literal.rb', line 35 def on_send(node) assert_equal_with_empty_literal(node) do |literal, matchers| return unless literal.values.empty? args = matchers.map(&:source).join(', ') = format(MSG, literal: literal.source, arguments: args) add_offense(node, message: ) do |corrector| object = matchers.first corrector.replace(node.loc.selector, 'assert_empty') corrector.replace(first_and_second_arguments_range(node), object.source) end end end |