module Coverage
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.resultwill 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. Anilvalue means coverage is disabled for this line (lines likeelseandend). 
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]}
Public Class Methods
          
            peek_result  → hash
          
          
          click to toggle source
          
        
        
        
        Returns a hash that contains filename as key and coverage array as value.
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;
}
          
          
            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 ncoverages = rb_coverage_peek_result(klass);
    VALUE coverages = rb_get_coverages();
    st_foreach(RHASH_TBL(coverages), coverage_clear_result_i, 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();
            rb_obj_hide(rb_coverages);
        }
        rb_set_coverages(rb_coverages);
    }
    return Qnil;
}