lib/shindo/taciturn.rb
module Shindo class Tests private def display_description_stack(description_stack = @description_stack, formatador = Formatador.new) return if description_stack.empty? formatador.indent do formatador.display_line(description_stack.pop) display_description_stack(description_stack, formatador) end end def display_description(description) unless @indented print ' ' @indented = true end end def display_error(error) Thread.current[:formatador].display_line Thread.current[:formatador].display_line(Thread.current[:file]) display_description_stack Thread.current[:formatador].display_line("[red]#{error.message} (#{error.class})[/]") unless error.backtrace.empty? Thread.current[:formatador].indent do Thread.current[:formatador].display_lines(error.backtrace.map {|line| "[red]#{line}[/]"}) end end end def display_failure(description) Thread.current[:totals][:failed] += 1 Thread.current[:formatador].display_line Thread.current[:formatador].display_line(Thread.current[:file]) display_description_stack Thread.current[:formatador].display_line("[red]- #{description}[/]") end def display_pending(description) Thread.current[:totals][:pending] += 1 print Formatador.parse("[yellow]#[/]") end def display_success(description) Thread.current[:totals][:succeeded] += 1 print Formatador.parse("[green]+[/]") end def raises?(expectation, &block) value = begin instance_eval(&block) rescue => error error end [value, value.is_a?(expectation)] end def returns?(expectation, &block) [value = instance_eval(&block), value == expectation] end end end