Class: Minitest::Test

Inherits:
Object
  • Object
show all
Includes:
Utils::Assertions
Defined in:
lib/minitest/utils/extension.rb

Class Method Summary collapse

Methods included from Utils::Assertions

#assert, #refute

Class Method Details

.let(name, &block) ⇒ Object

Raises:

  • (ArgumentError)


58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/minitest/utils/extension.rb', line 58

def self.let(name, &block)
  target = instance_method(name) rescue nil
  message = "Cannot define let(:#{name});"

  raise ArgumentError, "#{message} method cannot begin with 'test'." if name.to_s.start_with?("test")
  raise ArgumentError, "#{message} method already defined by #{target.owner}." if target

  define_method(name) do
    @_memoized ||= {}
    @_memoized.fetch(name) {|k| @_memoized[k] = instance_eval(&block) }
  end
end

.setup(&block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/minitest/utils/extension.rb', line 34

def self.setup(&block)
  mod = Module.new
  mod.module_eval do
    define_method :setup do
      super()
      instance_eval(&block)
    end
  end

  include mod
end

.teardown(&block) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/minitest/utils/extension.rb', line 46

def self.teardown(&block)
  mod = Module.new
  mod.module_eval do
    define_method :teardown do
      super()
      instance_eval(&block)
    end
  end

  include mod
end

.test(name, &block) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/minitest/utils/extension.rb', line 19

def self.test(name, &block)
  test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
  defined = method_defined? test_name

  raise "#{test_name} is already defined in #{self}" if defined

  if block_given?
    define_method(test_name, &block)
  else
    define_method(test_name) do
      flunk "No implementation provided for #{name}"
    end
  end
end