модуль Coverage
Coverage предоставляет функцию измерения покрытия для Ruby. Эта функция экспериментальная, поэтому эти API могут быть изменены в будущем.
Использование
-
require “coverage”
-
выполнить ::start
-
загрузить или подгрузить файл исходного кода Ruby
-
::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]}
Публичные методы класса
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;
} Возвращает словарь, в котором имя файла является ключом, а массив покрытия — значением.
static VALUE
rb_coverage_result(VALUE klass)
{
VALUE ncoverages = rb_coverage_peek_result(klass);
rb_reset_coverages();
return ncoverages;
} Возвращает словарь, в котором имя файла является ключом, а массив покрытия — значением, и отключает измерение покрытия.
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;
} Включает измерение покрытия.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.