class << self
Definitions
def coverage
The currently registered coverage wrapper.
Signature
-
returns
Covered::Forks | Nil
Implementation
def coverage
LOCK.synchronize do
@coverages&.last
end
end
def start(coverage)
Register coverage for fork handling.
Signature
-
parameter
coverageCovered::Forks The coverage wrapper to use in forked children.
Implementation
def start(coverage)
LOCK.synchronize do
(@coverages ||= []) << coverage
end
end
def finish(coverage = nil)
Clear the registered coverage.
Implementation
def finish(coverage = nil)
LOCK.synchronize do
if coverage
@coverages&.delete(coverage)
else
@coverages&.pop
end
end
end
def after_fork
Reset coverage in a forked child and save it at exit.
Implementation
def after_fork
return unless coverage = Handler.coverage
pid = Process.pid
# Any pre-existing coverage is being tracked by the parent process, so discard it.
coverage.clear
at_exit do
# Don't break forked children:
if Process.pid == pid
coverage.finish
end
end
end