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