Spec-Zone.ru › Ruby 2.3

модуль Coverage

Coverage предоставляет функцию измерения покрытия для Ruby. Эта функция экспериментальная, поэтому эти API могут быть изменены в будущем.

Использование

  1. require “coverage”

  2. выполнить ::start

  3. загрузить или загрузить Ruby-исходный файл

  4. ::result вернёт хэш, содержащий имя файла в качестве ключа и массив покрытия в качестве значения. Массив покрытия указывает, для каждой строки, количество выполнений интерпретатором. Значение nil означает, что для этой строки измерение покрытия отключено (строки, такие как else и end).

Пример

[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]}

Публичные методы класса

peek_result → hash Показать исходный код
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 Показать исходный код
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 Показать исходный код
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;
}

Включает измерение покрытия.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API