module Minitest::SubTestCase

Constants

VERSION

Public Instance Methods

sub_test_case(name, &block) click to toggle source
Calls superclass method
# File lib/minitest/sub_test_case.rb, line 6
def sub_test_case(name, &block)
  parent_test_case = self
  sub_test_case = Class.new(self) do
    define_singleton_method(:class_name) do
      class_name = defined?(parent_test_case.class_name) ? parent_test_case.class_name : parent_test_case
      [class_name, name].compact.join("::")
    end

    define_singleton_method(:methods_matching) do |re|
      super(re) - parent_test_case.methods_matching(re)
    end

    define_singleton_method(:name) do
      class_name
    end

    # NOTE: `location` method needs only for support of Minitest < 5.11.
    define_method(:location) do
      loc = " [#{self.failure.location}]" unless passed? or error?
      "#{self.class.class_name}##{self.name}#{loc}"
    end

    # NOTE: These methods need for Rails's parallel testing that uses DRb.
    define_method(:marshal_dump) do
      [self.name]
    end

    define_method(:marshal_load) do |ary|
      self.name = ary
    end
  end

  sub_test_case.class_eval(&block)
  sub_test_case
end