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/