dsawardekar/speckle

View on GitHub
lib/reporters/dotmatrix_reporter.riml

Summary

Maintainability
Test Coverage
class DotMatrixReporter < BaseReporter

  def initialize
    super
    self.dots = 0
    self.line_buffer = []
    self.log_messages = []
  end

  defm write(msg)
    if self.dots > 50
      self.writer.writeln(msg)
      self.dots = 0
    else
      self.writer.write(msg)
    end
  end

  defm on_spec_pass(meta, stats)
    self.dots += 1
    self.write('.')
  end

  defm on_spec_failure(meta, err, stats)
    self.dots += 1
    self.write(self.to_red("x"))

    name = meta.get_sentence()
    context = meta.get_context()
    add(self.line_buffer, self.to_red("#{context} ##{name}"))
    add(self.line_buffer, self.to_red("    #{err.get_message()}"))

    self.print_stacktrace(err)

    add(self.line_buffer, '')
  end

  defm on_spec_error(meta, err, stats)
    self.on_spec_failure(meta, err, stats)
  end

  defm write_epilogue_separator
    self.flush_log_buffer()

    self.writer.writeln('')
    for line in self.line_buffer
      self.writer.writeln(line)
    end

    self.writer.writeln("")
  end

  defm write_stacktrace_line(line)
    add(self.line_buffer, "       #{line}")
  end

end