модуль Coverage
Coverage предоставляет функцию измерения покрытия для Ruby. Эта функция экспериментальная, поэтому эти API могут быть изменены в будущем.
Использование
-
require “coverage.so”
-
выполнить ::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.so"
Coverage.start
require "foo.rb"
p Coverage.result #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}
Методы публичного класса
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;
} Возвращает хеш, содержащий имя файла в качестве ключа и массив покрытия в качестве значения, и отключает измерение покрытия.
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.