diff options
| author | Jean Boussier <jean.boussier@gmail.com> | 2026-04-29 13:12:51 +0900 |
|---|---|---|
| committer | Jean Boussier <jean.boussier@gmail.com> | 2026-05-04 14:01:54 +0200 |
| commit | 8bf6d7bfcb4ca46d2cfe73bdbce2fdb0652b1aae (patch) | |
| tree | f6ae3bd65d3f7a98979991942da6a82ad2e90daa /test | |
| parent | a3cfaf25031853f97114ecc6dcca852a02d95867 (diff) | |
Fix coverage support for RubyVM::ISeq.compile
[Bug #22018]
ISeq returned by `RubyVM::InstructionSequene.load_iseq` weren't
handled by the coverage module.
Diffstat (limited to 'test')
| -rw-r--r-- | test/coverage/test_coverage.rb | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/test/coverage/test_coverage.rb b/test/coverage/test_coverage.rb index 80f8930472..adcd4a946c 100644 --- a/test/coverage/test_coverage.rb +++ b/test/coverage/test_coverage.rb @@ -82,6 +82,70 @@ class TestCoverage < Test::Unit::TestCase } end + def test_coverage_snapshot_iseq_compile + Dir.mktmpdir {|tmp| + Dir.chdir(tmp) { + File.open("test.rb", "w") do |f| + f.puts <<-EOS + def coverage_test_snapshot + :ok + end + EOS + end + + assert_in_out_err(ARGV, <<-"end;", ["[1, 0, nil]", "[1, 1, nil]", "[1, 1, nil]"], []) + class RubyVM::InstructionSequence + def self.load_iseq(path) + compile(File.read(path), path, path) + end + end + + Coverage.start + tmp = Dir.pwd + require tmp + "/test.rb" + cov = Coverage.peek_result[tmp + "/test.rb"] + coverage_test_snapshot + cov2 = Coverage.peek_result[tmp + "/test.rb"] + p cov + p cov2 + p Coverage.result[tmp + "/test.rb"] + end; + } + } + end + + def test_coverage_snapshot_iseq_compile_file + Dir.mktmpdir {|tmp| + Dir.chdir(tmp) { + File.open("test.rb", "w") do |f| + f.puts <<-EOS + def coverage_test_snapshot + :ok + end + EOS + end + + assert_in_out_err(ARGV, <<-"end;", ["[1, 0, nil]", "[1, 1, nil]", "[1, 1, nil]"], []) + class RubyVM::InstructionSequence + def self.load_iseq(path) + compile_file(path) + end + end + + Coverage.start + tmp = Dir.pwd + require tmp + "/test.rb" + cov = Coverage.peek_result[tmp + "/test.rb"] + coverage_test_snapshot + cov2 = Coverage.peek_result[tmp + "/test.rb"] + p cov + p cov2 + p Coverage.result[tmp + "/test.rb"] + end; + } + } + end + def test_restarting_coverage Dir.mktmpdir {|tmp| Dir.chdir(tmp) { |
