Module
Coverage
provides coverage measurement feature for Ruby. This feature is experimental, so these APIs may be changed in future.
Usage
-
require “coverage”
-
require or load Ruby source file
-
Coverage.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. Anil
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" Coverage.start require "foo.rb" p Coverage.result #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}
Class Methods
ext/coverage/coverage.c
View on GitHub
static VALUE
rb_coverage_peek_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_peek_result_i, ncoverages);
rb_hash_freeze(ncoverages);
return ncoverages;
}
Returns a hash that contains filename as key and coverage array as value.
ext/coverage/coverage.c
View on GitHub
static VALUE
rb_coverage_result(VALUE klass)
{
VALUE ncoverages = rb_coverage_peek_result(klass);
rb_reset_coverages();
return ncoverages;
}
Returns a hash that contains filename as key and coverage array as value and disables coverage measurement.
ext/coverage/coverage.c
View on GitHub
static VALUE
rb_coverage_start(VALUE klass)
{
VALUE coverages = rb_get_coverages();
if (!RTEST(coverages)) {
coverages = rb_hash_new();
rb_obj_hide(coverages);
rb_set_coverages(coverages);
}
return Qnil;
}
Enables coverage measurement.