Sha256: 6f69484f6f446da834e73edcd028cb90e23f0a131dcdbb02f91ef8e4e8048c24

Contents?: true

Size: 984 Bytes

Versions: 6

Compression:

Stored size: 984 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module Spoom
  module Deadcode
    module Plugins
      class Minitest < Base
        extend T::Sig

        ignore_classes_named(/Test$/)

        ignore_methods_named(
          "after_all",
          "around",
          "around_all",
          "before_all",
          "setup",
          "teardown",
        )

        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_/)
        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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
spoom-1.5.4 lib/spoom/deadcode/plugins/minitest.rb
spoom-1.5.3 lib/spoom/deadcode/plugins/minitest.rb
spoom-1.5.2 lib/spoom/deadcode/plugins/minitest.rb
spoom-1.5.1 lib/spoom/deadcode/plugins/minitest.rb
spoom-1.5.0 lib/spoom/deadcode/plugins/minitest.rb
spoom-1.4.2 lib/spoom/deadcode/plugins/minitest.rb