Module: Ibex::Coverage::EventStream

Defined in:
lib/ibex/coverage/event_stream.rb

Overview

Bounded reader for the public runtime-event JSON Lines protocol.

Constant Summary collapse

MAX_LINE_BYTES =

@rbs! interface _CoverageEventInput def gets: (Integer) -> String? end

1_048_576
MAX_NESTING =

: Integer

32
ROOT_KEYS =

: Integer

%w[data event ibex_runtime_event schema_version sequence].freeze
EVENT_TYPES =

: Array

%w[start shift reduce error recover discard accept reject].freeze

Class Method Summary collapse

Class Method Details

.each_file(path, &block) ⇒ Object



25
26
27
# File 'lib/ibex/coverage/event_stream.rb', line 25

def each_file(path, &block)
  File.open(path, "rb") { |input| each_io(input, source: path, &block) }
end

.each_io(input, source:, &block) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ibex/coverage/event_stream.rb', line 31

def each_io(input, source:, &block)
  line_number = 0
  while (line = input.gets(MAX_LINE_BYTES + 1))
    line_number += 1
    reject_oversized_line(line, source, line_number)
    document = parse_line(line, source, line_number)
    validate_envelope(document, source, line_number)
    block.call(document, line_number)
  end
  raise_invalid(source, 1, "event stream is empty") if line_number.zero?
end