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