Module: DeepCover::Tools::BuiltinCoverage

Defined in:
lib/deep_cover/tools/builtin_coverage.rb

Instance Method Summary collapse

Instance Method Details

#builtin_coverage(source, filename, lineno) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/deep_cover/tools/builtin_coverage.rb', line 5

def builtin_coverage(source, filename, lineno)
  require 'coverage'
  filename = File.absolute_path(File.expand_path(filename))
  ::Coverage.start
  begin
    Tools.silence_warnings do
      execute_sample -> { run_with_line_coverage(source, filename, lineno) }
    end
  ensure
    result = ::Coverage.result
  end
  unshift_coverage(result.fetch(filename), lineno)
end

#run_with_line_coverage(source, filename = nil, lineno = 1) ⇒ Object

Executes the source as if it was in the specified file while builtin coverage information is still captured



22
23
24
25
# File 'lib/deep_cover/tools/builtin_coverage.rb', line 22

def run_with_line_coverage(source, filename = nil, lineno = 1)
  source = shift_source(source, lineno)
  Object.to_java.getRuntime.executeScript(source, filename)
end