Project

General

Profile

Actions

Feature #13667

closed

Add Coverage.running? to quickly check if Coverage is enabled.

Added by burke (Burke Libbey) almost 7 years ago. Updated about 5 years ago.

Status:
Closed
Target version:
-
[ruby-core:81726]

Description

Since we can't RubyVM::InstructionSequence#to_binary when Coverage is running, it is useful to be able to ask ruby if coverage is active.

This is possible with Coverage.peek_result, but not efficient, since it involves quite a bit of data copying.

I've used the private symbol rb_get_coverages in bootsnap for now but this feels worth exposing publicly.

> Benchmark.realtime { 100.times{ Coverage.peek_result } }
=> 1.3659249999909662
> Benchmark.realtime { 100.times{ Bootsnap::CompileCache::Native.coverage_running? } }
=> 5.099998088553548e-05

Example usage:

class RubyVM::InstructionSequence
  def load_iseq(path)
    return nil if defined?(Coverage) && Coverage.running?
    # ...
  end
end

Files

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0