module Coverage
Coverage provides coverage measurement feature for Ruby. This feature is experimental, so these APIs may be changed in future.
Usage¶ ↑
-
require “coverage.so”
-
do ::start
-
require or load Ruby source file
-
::result will return a hash that contains filename as key and coverage array as value. A coverage array gives, for each line, the number of line execution by the interpreter. A
nil
value means coverage is disabled for this line (lines likeelse
andend
).
Example¶ ↑
[foo.rb] s = 0 10.times do |x| s += x end if s == 45 p :ok else p :ng end [EOF] require "coverage.so" Coverage.start require "foo.rb" p Coverage.result #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}
Public Class Methods
result → hash
click to toggle source
Returns a hash that contains filename as key and coverage array as value and disables coverage measurement.
static VALUE rb_coverage_result(VALUE klass) { VALUE coverages = rb_get_coverages(); VALUE ncoverages = rb_hash_new(); if (!RTEST(coverages)) { rb_raise(rb_eRuntimeError, "coverage measurement is not enabled"); } st_foreach(RHASH_TBL(coverages), coverage_result_i, ncoverages); rb_hash_freeze(ncoverages); rb_reset_coverages(); return ncoverages; }
start → nil
click to toggle source
Enables coverage measurement.
static VALUE rb_coverage_start(VALUE klass) { if (!RTEST(rb_get_coverages())) { if (rb_coverages == Qundef) { rb_coverages = rb_hash_new(); RBASIC(rb_coverages)->klass = 0; } rb_set_coverages(rb_coverages); } return Qnil; }