From 630a7f33686c7704b664740a34bae9b2acabfa40 Mon Sep 17 00:00:00 2001 From: Koichi ITO Date: Fri, 24 Sep 2021 01:37:18 +0900 Subject: [PATCH] [Fix #143] Fix an error for `Minitest/LiteralAsActualArgumentTest` Fixes #143. This PR fixes an error for `Minitest/LiteralAsActualArgumentTest` when expected and actual arguments are literals. --- CHANGELOG.md | 4 ++++ lib/rubocop/cop/minitest/literal_as_actual_argument.rb | 9 ++++----- .../cop/minitest/literal_as_actual_argument_test.rb | 10 ++++++++++ 3 files changed, 18 insertions(+), 5 deletions(-) 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