Skip to content
Snippets Groups Projects

Return the last coverage in trace stream

All threads resolved!
1 file
+ 9
24
Compare changes
  • Side-by-side
  • Inline
@@ -74,7 +74,7 @@ def extract_coverage(regex)
match = ""
reverse_line do |line|
matches = line.force_encoding(Encoding.default_external).scan(regex)
matches = line.force_encoding(regex.encoding).scan(regex)
next unless matches.is_a?(Array)
next if matches.empty?
@@ -86,34 +86,19 @@ def extract_coverage(regex)
nil
rescue
# if bad regex or something goes wrong we dont want to interrupt transition
# so we just silentrly ignore error for now
# so we just silently ignore error for now
end
private
def read_last_lines(last_lines)
chunks = []
pos = lines = 0
max = stream.size
# We want an extra line to make sure fist line has full contents
while lines <= last_lines && pos < max
pos += BUFFER_SIZE
buf =
if pos <= max
stream.seek(-pos, IO::SEEK_END)
stream.read(BUFFER_SIZE)
else # Reached the head, read only left
stream.seek(0)
stream.read(BUFFER_SIZE - (pos - max))
end
lines += buf.count("\n")
chunks.unshift(buf)
def read_last_lines(limit)
result = ''
reverse_line do |line|
result = line + result
limit -= 1
return result if limit <= 0
end
chunks.join.lines.last(last_lines).join
result
end
def reverse_line
Loading