ruby-changes:73912
From: Samuel <ko1@a...>
Date: Fri, 7 Oct 2022 20:34:09 +0900 (JST)
Subject: [ruby-changes:73912] 24f3e397e9 (master): Add spec for `Coverage.supported?` and `start(eval: true)`. (#6499)
https://git.ruby-lang.org/ruby.git/commit/?id=24f3e397e9 From 24f3e397e957a6747a2067edd831bc7920e204ec Mon Sep 17 00:00:00 2001 From: Samuel Williams <samuel.williams@o...> Date: Sat, 8 Oct 2022 00:33:40 +1300 Subject: Add spec for `Coverage.supported?` and `start(eval: true)`. (#6499) * Don't emit coverage for eval when eval coverage is disabled. --- spec/ruby/library/coverage/result_spec.rb | 30 +++++++++++++++++++++++++----- 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 https://github.com/ruby/ruby/blob/trunk/spec/ruby/library/coverage/result_spec.rb#L106 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 diff --git a/vm_eval.c b/vm_eval.c index c0558fce2b..a71688c6bc 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -11,6 +11,7 @@ https://github.com/ruby/ruby/blob/trunk/vm_eval.c#L11 **********************************************************************/ +#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, https://github.com/ruby/ruby/blob/trunk/vm_eval.c#L1673 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; -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/