summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-20 10:17:37 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-20 10:17:37 +0000
commitab2da43ce4f0ca485721cdb3de8d814e47e74cdf (patch)
treea84dc0dc113d8cbc68f92bb259bffe2ca101e3f1
parent1d13610d8a297294fa1d727b9fc0d817b28165e7 (diff)
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
-rw-r--r--ext/coverage/lib/coverage.rb2
-rw-r--r--test/coverage/test_coverage.rb2
2 files changed, 2 insertions, 2 deletions
diff --git a/ext/coverage/lib/coverage.rb b/ext/coverage/lib/coverage.rb
index 7a6ef0e1002..f1923ef366c 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 12408330888..d2a2d018a95 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