Project

General

Profile

Actions

Bug #22018

closed

ISeq created via `RubyVM::InstructionSequence.compile` don't support coverage

Bug #22018: ISeq created via `RubyVM::InstructionSequence.compile` don't support coverage

Added by byroot (Jean Boussier) 21 days ago. Updated 15 days ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:125377]

Description

Reproduction:

require "coverage"

File.write("/tmp/a.rb", <<~RUBY)
  module CoverableRaw
    def self.call
      "cover up"
    end
  end

  CoverableRaw.call
RUBY

Coverage.start
require "/tmp/a.rb"
p Coverage.result

File.write("/tmp/b.rb", <<~RUBY)
  module Coverable
    def self.call
      "cover up"
    end
  end

  Coverable.call
RUBY

class RubyVM::InstructionSequence
  def self.load_iseq(path)
    compile_file(path)
  end
end

Coverage.start
require "/tmp/b.rb"
p Coverage.result

Expected:

{"/tmp/a.rb" => [1, 1, 1, nil, nil, nil, 1]}
{"/tmp/b.rb" => [1, 1, 1, nil, nil, nil, 1]}

Actual:

{"/tmp/a.rb" => [1, 1, 1, nil, nil, nil, 1]}
{}

Patch: https://github.com/ruby/ruby/pull/16805

Actions

Also available in: PDF Atom