[前][次][番号順一覧][スレッド一覧]

ruby-changes:54259

From: mame <ko1@a...>
Date: Thu, 20 Dec 2018 19:17:41 +0900 (JST)
Subject: [ruby-changes:54259] mame:r66468 (trunk): ext/coverage/lib/coverage.rb (Coverage.line_stub): use only line events

mame	2018-12-20 19:17:37 +0900 (Thu, 20 Dec 2018)

  New Revision: 66468

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66468

  Log:
    ext/coverage/lib/coverage.rb (Coverage.line_stub): use only line events
    
    It wrongly used all linenos of ISeq#trace_points which includes not only
    line events but also call, return, and other events.  So, the result
    included some linenos that can not be covered at all by line coverage.

  Modified files:
    trunk/ext/coverage/lib/coverage.rb
    trunk/test/coverage/test_coverage.rb
Index: test/coverage/test_coverage.rb
===================================================================
--- test/coverage/test_coverage.rb	(revision 66467)
+++ test/coverage/test_coverage.rb	(revision 66468)
@@ -671,7 +671,7 @@ class TestCoverage < Test::Unit::TestCas https://github.com/ruby/ruby/blob/trunk/test/coverage/test_coverage.rb#L671
           f.puts "end"
         end
 
-        assert_equal([0, 0, 0, nil, 0, nil, 0], Coverage.line_stub("test.rb"))
+        assert_equal([0, 0, 0, nil, 0, nil, nil], Coverage.line_stub("test.rb"))
       }
     }
   end
Index: ext/coverage/lib/coverage.rb
===================================================================
--- ext/coverage/lib/coverage.rb	(revision 66467)
+++ ext/coverage/lib/coverage.rb	(revision 66468)
@@ -6,7 +6,7 @@ module Coverage https://github.com/ruby/ruby/blob/trunk/ext/coverage/lib/coverage.rb#L6
     iseqs = [RubyVM::InstructionSequence.compile_file(file)]
     until iseqs.empty?
       iseq = iseqs.pop
-      iseq.trace_points.each {|n, _| lines[n - 1] = 0 }
+      iseq.trace_points.each {|n, type| lines[n - 1] = 0 if type == :line }
       iseq.each_child {|child| iseqs << child }
     end
     lines

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]