Module: Coverage (Ruby 2.2.2)
Description: Module : Coverage - Ruby 2.2.2

- Home
- Core 2.2.2
- Std-lib 2.2.2
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- coverage/coverage.c

### Methods

- ::result
- ::start

### Class/Module Index

Quicksearch

- Coverage

No matching classes.

# Coverage

Coverage provides coverage measurement feature for Ruby. This feature is experimental, so these APIs may be changed in future.

# Usage¶ ↑

1. require “coverage.so”

2. do ::start

3. require or load Ruby source file

4. ::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 like `else` and `end`).

# 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();
                rb_obj_hide(rb_coverages);
            }
            rb_set_coverages(rb_coverages);
        }
        return Qnil;
    }