class Test::Unit::Fixture::Fixture
def [](type)
def [](type) case type when :setup @setup when :cleanup @cleanup when :teardown @teardown end end
def after_callbacks(type)
def after_callbacks(type) @cached_after_callbacks[type] ||= collect_after_callbacks(type) end
def before_callbacks(type)
def before_callbacks(type) @cached_before_callbacks[type] ||= collect_before_callbacks(type) end
def collect_after_callbacks(type)
def collect_after_callbacks(type) prepend_callbacks = [] append_callbacks = [] target_test_cases.each do |ancestor| prepend_callbacks << ancestor.fixture[type].after_prepend_callbacks append_callbacks << ancestor.fixture[type].after_append_callbacks end merge_callbacks(prepend_callbacks, append_callbacks) end
def collect_before_callbacks(type)
def collect_before_callbacks(type) prepend_callbacks = [] append_callbacks = [] target_test_cases.each do |ancestor| prepend_callbacks << ancestor.fixture[type].before_prepend_callbacks append_callbacks << ancestor.fixture[type].before_append_callbacks end merge_callbacks(prepend_callbacks, append_callbacks) end
def collect_target_test_cases
def collect_target_test_cases ancestors = @test_case.ancestors base_index = ancestors.index(::Test::Unit::Fixture) interested_ancestors = ancestors[0, base_index].find_all do |ancestor| ancestor.is_a?(Class) end interested_ancestors.reverse end
def initialize(test_case)
def initialize(test_case) @test_case = test_case @setup = HookPoint.new(@test_case, :setup, :after => :append) @cleanup = HookPoint.new(@test_case, :cleanup, :before => :prepend) @teardown = HookPoint.new(@test_case, :teardown, :before => :prepend) @cached_before_callbacks = {} @cached_after_callbacks = {} end
def merge_callbacks(prepend_callbacks, append_callbacks)
def merge_callbacks(prepend_callbacks, append_callbacks) all_callbacks = [] prepend_callbacks.reverse_each do |callbacks| all_callbacks.concat(callbacks) end append_callbacks.each do |callbacks| all_callbacks.concat(callbacks) end all_callbacks end
def target_test_cases
def target_test_cases @cached_target_test_cases ||= collect_target_test_cases end