Module: TestProf::BeforeAll::Minitest::ClassMethods

Defined in:
lib/test_prof/recipes/minitest/before_all.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#before_all_executorObject



154
155
156
157
158
159
160
# File 'lib/test_prof/recipes/minitest/before_all.rb', line 154

def before_all_executor
  return @before_all_executor if instance_variable_defined?(:@before_all_executor)

  @before_all_executor = if superclass.respond_to?(:before_all_executor)
    superclass.before_all_executor
  end
end

Instance Method Details

#after_all(&block) ⇒ Object



199
200
201
202
# File 'lib/test_prof/recipes/minitest/before_all.rb', line 199

def after_all(&block)
  self.before_all_executor = Executor.new(parent: before_all_executor)
  before_all_executor.teardown(&block)
end

#before_all(setup_fixtures: BeforeAll.config.setup_fixtures, &block) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/test_prof/recipes/minitest/before_all.rb', line 162

def before_all(setup_fixtures: BeforeAll.config.setup_fixtures, &block)
  self.before_all_executor = Executor.new(
    setup_fixtures: setup_fixtures,
    parent: before_all_executor,
    &block
  )

  # Do not add patches multiple times
  return if before_all_executor.parent

  prepend(Module.new do
    def before_setup
      self.class.before_all_executor.activate!(self)
      super
    end
  end)

  # Minitest 6+
  if singleton_class.method_defined?(:run_suite)
    singleton_class.prepend(Module.new do
      def run_suite(*)
        super
      ensure
        before_all_executor&.deactivate! unless parallelized
      end
    end)
  else
    singleton_class.prepend(Module.new do
      def run(*)
        super
      ensure
        before_all_executor&.deactivate! unless parallelized
      end
    end)
  end
end