class Shindo::Tests
def tests(description, tags = [], &block)
def tests(description, tags = [], &block) return self if Thread.main[:exit] || Thread.current[:reload] tags = [*tags] @tag_stack.push(tags) @befores.push([]) @afters.push([]) @description = nil description ||= 'Shindo.tests' description = "[bold]#{description}[normal]" unless tags.empty? description << " (#{tags.join(', ')})" end @description_stack.push(description) # if the test includes +tags and discludes -tags, evaluate it if (@if_tagged.empty? || !(@if_tagged & @tag_stack.flatten).empty?) && (@unless_tagged.empty? || (@unless_tagged & @tag_stack.flatten).empty?) if block_given? begin display_description(description) Formatador.indent { instance_eval(&block) } rescue => error display_error(error) end else @description = description end else display_description("[light_black]#{description}[/]") end @description_stack.pop @afters.pop @befores.pop @tag_stack.pop Thread.exit if Thread.main[:exit] || Thread.current[:reload] self end