class Bwoken::RoxFormatter

Public Class Methods

new() click to toggle source
# File lib/rox-client-bwoken/formatter.rb, line 18
def initialize

  @data = {}
  @original = Bwoken::ColorfulFormatter.new

  config = RoxClient.config
  @client = RoxClient::Client.new config.server, config.client_options
  @run = RoxClient::TestRun.new config.project
end
on(name, &block) click to toggle source
# File lib/rox-client-bwoken/formatter.rb, line 9
def on name, &block
  method_name = "_on_#{name}_callback"
  define_method method_name do |*args|
    @original.send method_name, *args
    instance_exec *args, &block
  end
end

Public Instance Methods

add_result(line, passed) click to toggle source
# File lib/rox-client-bwoken/formatter.rb, line 58
def add_result line, passed
  meta = rox_metadata line
  @run.add_result meta.merge(passed: passed, duration: ((Time.now - @data[meta[:name]][:start]) * 1000).floor)
  @data.delete meta[:name]
end
prepare_result(line) click to toggle source
# File lib/rox-client-bwoken/formatter.rb, line 53
def prepare_result line
  meta = rox_metadata line
  @data[meta[:name]] = { start: Time.now }
end
rox_metadata(line) click to toggle source
# File lib/rox-client-bwoken/formatter.rb, line 64
def rox_metadata line

  tokens = line.split(' ')
  name = tokens[4..-1].join(' ')

  return { name: name } unless m = name.match(/.*@rox\(([^\(\)]+)\)/)

  meta = { name: name.gsub(/@rox\([^\(\)]+\)/, '').strip, tags: [], tickets: [] }

  m[1].split(/\s+/).reject{ |s| s.empty? }.each do |part|
    if m = part.match(/c:(.+)/) || part.match(/category:(.+)/)
      meta[:category] << m[1]
    elsif m = part.match(/g:(.+)/) || part.match(/tag:(.+)/)
      meta[:tags] << m[1]
    elsif m = part.match(/t:(.+)/) || part.match(/ticket:(.+)/)
      meta[:tickets] << m[1]
    else
      meta[:key] = part
    end
  end

  meta
end