diff options
-rw-r--r-- | spec/ruby/library/coverage/result_spec.rb | 30 | ||||
-rw-r--r-- | vm_eval.c | 5 |
2 files changed, 29 insertions, 6 deletions
diff --git a/spec/ruby/library/coverage/result_spec.rb b/spec/ruby/library/coverage/result_spec.rb index 61283e4545..4bcce00cd7 100644 --- a/spec/ruby/library/coverage/result_spec.rb +++ b/spec/ruby/library/coverage/result_spec.rb @@ -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; |