lib/oneshot_coverage.rb in oneshot_coverage-0.1.3 vs lib/oneshot_coverage.rb in oneshot_coverage-0.2.0

- old
+ new

@@ -18,23 +18,27 @@ end end end class Reporter - def initialize(target_path:, logger:) + def initialize(target_path:, logger:, max_emit_per_request:) @target_path = target_path @logger = logger + @buffer = [] + @max_emit_per_request = max_emit_per_request if defined?(Bundler) @bundler_path = Bundler.bundle_path.to_s end end def emit Coverage.result(clear: true, stop: false). select { |k, v| is_target?(k, v) }. flat_map { |k, v| transform(k, v) }. - each { |row| @logger.post(row) } + each { |row| @buffer << row } + + @buffer.shift(emit_per_request).each { |row| @logger.post(row) } end def is_target?(filepath, value) return false if value[:oneshot_lines].empty? return false if !filepath.start_with?(@target_path) @@ -61,10 +65,14 @@ end def md5_hash_cache @md5_hash_cache ||= {} end + + def emit_per_request + @max_emit_per_request || @buffer.size + end end module_function def start @@ -78,18 +86,19 @@ def emit @reporter&.emit end - def configure(target_path:, logger: OneshotCoverage::Logger::NullLogger.new) + def configure(target_path:, logger: OneshotCoverage::Logger::NullLogger.new, max_emit_per_request: nil) target_path_by_pathname = if target_path.is_a? Pathname target_path else Pathname.new(target_path) end @reporter = OneshotCoverage::Reporter.new( target_path: target_path_by_pathname.cleanpath.to_s + "/", logger: logger, + max_emit_per_request: max_emit_per_request ) end end