class MinitestLog::Element

Attributes

args[RW]
attributes[RW]
block_to_be_rescued[RW]
duration_to_be_included[RW]
element_name[RW]
log[RW]
pcdata[RW]
start_time[RW]

Public Class Methods

new(log, element_name, *args) click to toggle source
# File lib/minitest_log.rb, line 479
def initialize(log, element_name, *args)

  self.log = log
  self.element_name = element_name
  self.args = args

  self.attributes = {}
  self.block_to_be_rescued = false
  self.duration_to_be_included = false
  self.pcdata = ''
  self.start_time = nil

  process_args
  put_element do
    put_attributes
    put_pcdata
    do_duration do
      do_block(&Proc.new) if block_given?
    end
  end

end

Public Instance Methods

do_block() { || ... } click to toggle source
# File lib/minitest_log.rb, line 548
def do_block
  if block_to_be_rescued
    begin
      yield
    rescue Exception => x
      log.put_element('rescued_exception', {:class => x.class, :message => x.message}) do
        log.put_element('backtrace') do
          backtrace = log_filter_backtrace(x.backtrace)
          log.put_pre(backtrace.join("\n"))
        end
      end
      log.counts[:error] += 1
    end
  else
    yield
  end
end
do_duration() { || ... } click to toggle source
# File lib/minitest_log.rb, line 537
def do_duration
  self.start_time = Time.new
  yield
  if duration_to_be_included
    end_time = Time.now
    duration_f = end_time.to_f - start_time.to_f
    duration_s = format('%.3f', duration_f)
    log_put_attributes({:duration_seconds => duration_s})
  end
end
log_filter_backtrace(backtrace) click to toggle source
# File lib/minitest_log.rb, line 576
def log_filter_backtrace(backtrace)
  log.send(:filter_backtrace, backtrace)
end
log_put_attributes(attributes) click to toggle source
# File lib/minitest_log.rb, line 572
def log_put_attributes(attributes)
  log.send(:put_attributes, attributes)
end
log_puts(s) click to toggle source

The called methods are private.

# File lib/minitest_log.rb, line 568
def log_puts(s)
  log.send(:log_puts, s)
end
process_args() click to toggle source
# File lib/minitest_log.rb, line 502
def process_args
  args.each do |arg|
    case
    when arg.kind_of?(Hash)
      self.attributes.merge!(arg)
    when arg.kind_of?(String)
      self.pcdata += arg
    when arg == :timestamp
      self.attributes[:timestamp] = MinitestLog.timestamp
    when arg == :duration
      self.duration_to_be_included = true
    when arg == :rescue
      self.block_to_be_rescued = true
    else
      self.pcdata = self.pcdata + arg.inspect
    end
  end
end
put_attributes() click to toggle source
# File lib/minitest_log.rb, line 527
def put_attributes
  log_put_attributes(attributes)
end
put_element() { || ... } click to toggle source
# File lib/minitest_log.rb, line 521
def put_element
  log_puts("BEGIN\t#{element_name}")
  yield
  log_puts("END\t#{element_name}")
end
put_pcdata() click to toggle source
# File lib/minitest_log.rb, line 531
def put_pcdata
  unless pcdata.empty?
    log.send(:put_pcdata, pcdata)
  end
end