lib/spoom/deadcode/plugins/minitest.rb in spoom-1.3.3 vs lib/spoom/deadcode/plugins/minitest.rb in spoom-1.4.0

- old
+ new

@@ -5,24 +5,42 @@ module Deadcode module Plugins class Minitest < Base extend T::Sig - ignore_classes_named(/Test$/) + ignore_classes_inheriting_from("Minitest::Test") - ignore_methods_named( - "after_all", - "around", - "around_all", - "before_all", - "setup", - "teardown", + MINITEST_METHODS = T.let( + Set.new([ + "after_all", + "around", + "around_all", + "before_all", + "setup", + "teardown", + ]), + T::Set[String], ) sig { override.params(definition: Model::Method).void } def on_define_method(definition) - file = definition.location.file - @index.ignore(definition) if file.match?(%r{test/.*test\.rb$}) && definition.name.match?(/^test_/) + return unless definition.name.start_with?("test_") || MINITEST_METHODS.include?(definition.name) + + owner = definition.owner + return unless owner.is_a?(Model::Class) + + @index.ignore(definition) if ignored_subclass?(owner) + end + + sig { override.params(send: Send).void } + def on_send(send) + case send.name + when "assert_predicate", "refute_predicate" + name = send.args[1]&.slice + return unless name + + @index.reference_method(name.delete_prefix(":"), send.location) + end end end end end end