Sha256: fea56e411baeaa6335a3a17b5be29d738a65ee81e7cfd8ce00f6ac1448308ae6
Contents?: true
Size: 1.53 KB
Versions: 22
Compression:
Stored size: 1.53 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Minitest # Tries to detect when a user accidentally used # `assert` when they meant to use `assert_equal`. # # NOTE: The second argument to the `assert` method named `message` and `msg` is allowed. # Because their names are inferred as message arguments. # # @safety # This cop is unsafe because it is not possible to determine # whether the second argument of `assert` is a message or not. # # @example # # bad # assert(3, my_list.length) # assert(expected, actual) # # # good # assert_equal(3, my_list.length) # assert_equal(expected, actual) # assert(foo, 'message') # assert(foo, message) # assert(foo, msg) # class AssertWithExpectedArgument < Base MSG = 'Did you mean to use `assert_equal(%<arguments>s)`?' RESTRICT_ON_SEND = %i[assert].freeze MESSAGE_VARIABLES = %w[message msg].freeze def_node_matcher :assert_with_two_arguments?, <<~PATTERN (send nil? :assert $_ $_) PATTERN def on_send(node) assert_with_two_arguments?(node) do |_expected, message| return if message.str_type? || message.dstr_type? || MESSAGE_VARIABLES.include?(message.source) arguments = node.arguments.map(&:source).join(', ') add_offense(node, message: format(MSG, arguments: arguments)) end end end end end end
Version data entries
22 entries across 22 versions & 1 rubygems
Version | Path |
---|---|
rubocop-minitest-0.26.0 | lib/rubocop/cop/minitest/assert_with_expected_argument.rb |
rubocop-minitest-0.25.1 | lib/rubocop/cop/minitest/assert_with_expected_argument.rb |