diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f7b241f..7f22b96e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## master (unreleased) +### Bug fixes + +* [#143](https://github.com/rubocop/rubocop-minitest/issues/143): Fix an error for `Minitest/LiteralAsActualArgumentTest` when expected and actual arguments are literals. ([@koic][]) + ## 0.15.0 (2021-08-09) ### New features diff --git a/lib/rubocop/cop/minitest/literal_as_actual_argument.rb b/lib/rubocop/cop/minitest/literal_as_actual_argument.rb index 505449fd..408e7ef1 100644 --- a/lib/rubocop/cop/minitest/literal_as_actual_argument.rb +++ b/lib/rubocop/cop/minitest/literal_as_actual_argument.rb @@ -27,17 +27,16 @@ class LiteralAsActualArgument < Base def on_send(node) return unless node.method?(:assert_equal) - actual = node.arguments[1] + expected, actual, message = *node.arguments return unless actual&.recursive_basic_literal? + return if expected.recursive_basic_literal? add_offense(all_arguments_range(node)) do |corrector| - autocorrect(corrector, node) + autocorrect(corrector, node, expected, actual, message) end end - def autocorrect(corrector, node) - expected, actual, message = *node.arguments - + def autocorrect(corrector, node, expected, actual, message) new_actual_source = if actual.hash_type? && !actual.braces? "{#{actual.source}}" else diff --git a/test/rubocop/cop/minitest/literal_as_actual_argument_test.rb b/test/rubocop/cop/minitest/literal_as_actual_argument_test.rb index 97a2f352..87176c01 100644 --- a/test/rubocop/cop/minitest/literal_as_actual_argument_test.rb +++ b/test/rubocop/cop/minitest/literal_as_actual_argument_test.rb @@ -99,4 +99,14 @@ def test_do_something end RUBY end + + def test_does_not_register_offense_when_expected_and_actual_are_basic_literals + assert_no_offenses(<<~RUBY) + class FooTest < Minitest::Test + def test_do_something + assert_equal 0, 1, 'message' + end + end + RUBY + end end