Module: Minitest::Hooks::ClassMethods
- Defined in:
- lib/minitest/hooks/test.rb
Constant Summary collapse
- NEW =
Object used to get an empty new instance, as new by default will return a dup of the singleton instance.
Object.new.freeze
Instance Method Summary collapse
-
#after(type = nil, &block) ⇒ Object
If type is :all, set the after_all hook instead of the after hook.
-
#around(type = nil, &block) ⇒ Object
If type is :all, set the around_all hook, otherwise set the around hook.
-
#before(type = nil, &block) ⇒ Object
If type is :all, set the before_all hook instead of the before hook.
-
#new(name) ⇒ Object
Unless name is NEW, return a dup singleton instance.
-
#with_info_handler(*args, &block) ⇒ Object
When running the specs in the class, first create a singleton instance, the singleton is used to implement around_all/before_all/after_all hooks, and each spec will run as a dup of the singleton instance.
Instance Method Details
#after(type = nil, &block) ⇒ Object
If type is :all, set the after_all hook instead of the after hook.
125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/minitest/hooks/test.rb', line 125 def after(type=nil, &block) if type == :all define_method(:after_all) do instance_exec(&block) super() end nil else super end end |
#around(type = nil, &block) ⇒ Object
If type is :all, set the around_all hook, otherwise set the around hook.
106 107 108 109 |
# File 'lib/minitest/hooks/test.rb', line 106 def around(type=nil, &block) meth = type == :all ? :around_all : :around define_method(meth, &block) end |
#before(type = nil, &block) ⇒ Object
If type is :all, set the before_all hook instead of the before hook.
112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/minitest/hooks/test.rb', line 112 def before(type=nil, &block) if type == :all define_method(:before_all) do super() instance_exec(&block) end nil else super end end |
#new(name) ⇒ Object
Unless name is NEW, return a dup singleton instance.
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/minitest/hooks/test.rb', line 50 def new(name) if name.equal?(NEW) return super('around_all') end instance = @instance.dup instance.name = name instance.failures = [] instance end |
#with_info_handler(*args, &block) ⇒ Object
When running the specs in the class, first create a singleton instance, the singleton is used to implement around_all/before_all/after_all hooks, and each spec will run as a dup of the singleton instance.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/minitest/hooks/test.rb', line 64 def with_info_handler(*args, &block) @instance = new(NEW) @instance.time = 0 @instance.name = "around_all" reporter = args[0] begin @instance.around_all do begin @instance.capture_exceptions do @instance.name = "before_all" @instance.before_all end if @instance.failure failed = true _record_minitest_hooks_error(reporter, @instance) else super end ensure @instance.capture_exceptions do @instance.name = "after_all" unless failed @instance.after_all end if @instance.failure && !failed failed = true _record_minitest_hooks_error(reporter, @instance) end @instance.name = "around_all" unless failed end end rescue => e @instance.capture_exceptions do raise e end _record_minitest_hooks_error(reporter, @instance) end end |