From ab2da43ce4f0ca485721cdb3de8d814e47e74cdf Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 20 Dec 2018 10:17:37 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/coverage/lib/coverage.rb | 2 +- test/coverage/test_coverage.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/coverage/lib/coverage.rb b/ext/coverage/lib/coverage.rb index 7a6ef0e100..f1923ef366 100644 --- a/ext/coverage/lib/coverage.rb +++ b/ext/coverage/lib/coverage.rb @@ -6,7 +6,7 @@ module Coverage 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 diff --git a/test/coverage/test_coverage.rb b/test/coverage/test_coverage.rb index 1240833088..d2a2d018a9 100644 --- a/test/coverage/test_coverage.rb +++ b/test/coverage/test_coverage.rb @@ -671,7 +671,7 @@ class TestCoverage < Test::Unit::TestCase 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