Add spec for `Coverage.supported?` and `start(eval: true)`. (#6499)

* Don't emit coverage for eval when eval coverage is disabled.
This commit is contained in:
Samuel Williams 2022-10-08 00:33:40 +13:00 коммит произвёл GitHub
Родитель 1e6cdc76e4
Коммит 24f3e397e9
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 29 добавлений и 6 удалений

Просмотреть файл

@ -106,15 +106,35 @@ describe 'Coverage.result' do
end
ruby_version_is '3.2' do
it 'returns the correct results when eval is used' do
Coverage.start
it 'indicates support for different features' do
Coverage.supported?(:lines).should == true
end
it 'returns the correct results when eval coverage is enabled' do
Coverage.supported?(:eval).should == true
Coverage.start(lines: true, eval: true)
require @eval_code_file.chomp('.rb')
result = Coverage.result
result.should == {
@eval_code_file => [
1, nil, 1, nil, 1, 1, nil, nil, nil, nil, 1
]
@eval_code_file => {
lines: [1, nil, 1, nil, 1, 1, nil, nil, nil, nil, 1]
}
}
end
it 'returns the correct results when eval coverage is enabled' do
Coverage.supported?(:eval).should == true
Coverage.start(lines: true, eval: false)
require @eval_code_file.chomp('.rb')
result = Coverage.result
result.should == {
@eval_code_file => {
lines: [1, nil, 1, nil, 1, nil, nil, nil, nil, nil, 1]
}
}
end
end

Просмотреть файл

@ -11,6 +11,7 @@
**********************************************************************/
#include "internal/thread.h"
struct local_var_list {
VALUE tbl;
};
@ -1672,7 +1673,9 @@ eval_make_iseq(VALUE src, VALUE fname, int line, const rb_binding_t *bind,
rb_iseq_t *iseq = NULL;
rb_ast_t *ast;
int isolated_depth = 0;
int coverage_enabled = Qtrue;
// Conditionally enable coverage depending on the current mode:
VALUE coverage_enabled = RBOOL(rb_get_coverage_mode() & COVERAGE_TARGET_EVAL);
{
int depth = 1;