class Rgot::Common

Attributes

output[RW]

@dynamic output, output=

Public Class Methods

new() click to toggle source
# File lib/rgot/common.rb, line 11
def initialize
  @output = "".dup
  @failed = false
  @skipped = false
  @finished = false
  @start = Rgot.now
  @mutex = Thread::Mutex.new
end

Public Instance Methods

error(*args) click to toggle source
# File lib/rgot/common.rb, line 54
def error(*args)
  internal_log(args.map(&:to_s).join(' '))
  fail!
  nil
end
errorf(*args) click to toggle source
# File lib/rgot/common.rb, line 60
def errorf(*args)
  internal_log(sprintf(*args))
  fail!
  nil
end
fail!() click to toggle source
# File lib/rgot/common.rb, line 32
def fail!
  @mutex.synchronize { @failed = true }
end
fail_now() click to toggle source
# File lib/rgot/common.rb, line 92
def fail_now
  fail!
  finish!
  throw :skip
end
failed?() click to toggle source
# File lib/rgot/common.rb, line 20
def failed?
  @mutex.synchronize { @failed }
end
fatal(*args) click to toggle source
# File lib/rgot/common.rb, line 66
def fatal(*args)
  internal_log(args.map(&:to_s).join(' '))
  fail_now
end
fatalf(*args) click to toggle source
# File lib/rgot/common.rb, line 71
def fatalf(*args)
  internal_log(sprintf(*args))
  fail_now
end
finish!() click to toggle source
# File lib/rgot/common.rb, line 40
def finish!
  @mutex.synchronize { @finished = true }
end
finished?() click to toggle source
# File lib/rgot/common.rb, line 28
def finished?
  @mutex.synchronize { @finished }
end
log(*args) click to toggle source
# File lib/rgot/common.rb, line 44
def log(*args)
  internal_log(args.map(&:to_s).join(' '))
  nil
end
logf(*args) click to toggle source
# File lib/rgot/common.rb, line 49
def logf(*args)
  internal_log(sprintf(*args))
  nil
end
skip(*args) click to toggle source
# File lib/rgot/common.rb, line 76
def skip(*args)
  internal_log(args.map(&:to_s).join(' '))
  skip_now
end
skip!() click to toggle source
# File lib/rgot/common.rb, line 36
def skip!
  @mutex.synchronize { @skipped = true }
end
skip_now() click to toggle source
# File lib/rgot/common.rb, line 86
def skip_now
  skip!
  finish!
  throw :skip
end
skipf(*args) click to toggle source
# File lib/rgot/common.rb, line 81
def skipf(*args)
  internal_log(sprintf(*args))
  skip_now
end
skipped?() click to toggle source
# File lib/rgot/common.rb, line 24
def skipped?
  @mutex.synchronize { @skipped }
end

Private Instance Methods

decorate(str) click to toggle source
# File lib/rgot/common.rb, line 100
def decorate(str)
  # internal_log -> synchronize -> internal_log -> other log -> running method
  c = caller[4]
  path = c.sub(/:.*/, '')
  line = c.match(/:(\d+?):/)&.[](1)
  relative_path = Pathname.new(path).relative_path_from(Pathname.new(Dir.pwd)).to_s
  # Every line is indented at least 4 spaces.
  "    #{relative_path}:#{line}: #{str}\n"
end
internal_log(msg) click to toggle source
# File lib/rgot/common.rb, line 110
def internal_log(msg)
  @mutex.synchronize { @output << decorate(msg) }
end