class ParallelCucumber::RuntimeLogger
def after_feature(feature)
def after_feature(feature) @example_times[feature.file] += Time.now.to_f - @start_at end
def after_features(*args)
def after_features(*args) lock_output do @io.puts @example_times.map { |file, time| "#{file}:#{time}" } end end
def before_feature(_)
def before_feature(_) @start_at = Time.now.to_f end
def initialize(step_mother, path_or_io, options=nil)
def initialize(step_mother, path_or_io, options=nil) @io = prepare_io(path_or_io) @example_times = Hash.new(0) end
def lock_output
def lock_output if File === @io begin @io.flock File::LOCK_EX yield ensure @io.flock File::LOCK_UN end else yield end end
def prepare_io(path_or_io)
def prepare_io(path_or_io) if path_or_io.respond_to?(:write) path_or_io else # its a path File.open(path_or_io, 'w').close # clean out the file file = File.open(path_or_io, 'a') at_exit do unless file.closed? file.flush file.close end end file end end