Project

General

Profile

Bug #19857

Updated by ioquatix (Samuel Williams) 8 months ago

It seems like `eval` based coverage is reset every time eval is invoked. 

 ```ruby 
 #!/usr/bin/env ruby 

 require 'coverage' 

 def measure(flag) 
   c = Class.new 
   c.class_eval(<<~RUBY, "foo.rb", 1) 
     def foo(flag) 
       if flag 
         puts "foo" 
       else 
         puts "bar" 
       end 
     end 
   RUBY 
  
   return c.new.foo(flag) 
 end 

 Coverage.start(lines: true, eval: true) 

 # Depending on the order of these two operations, different coverage computation is calculated, because the evaluation of the code is considered different, even if the content/path is the same. 
 measure(false) 
 measure(true) 

 p Coverage.result 
 ``` 

 Further investigation is required.

Back