lib/undercover.rb in undercover-0.1.2 vs lib/undercover.rb in undercover-0.1.3
- old
+ new
@@ -19,23 +19,29 @@
extend Forwardable
def_delegators :changeset, :validate
attr_reader :changeset,
:lcov,
- :results
+ :results,
+ :code_dir
- # TODO: pass merge base as cli argument
- # add dependecy on "options" for all opts (dirs, git_dir, etc)
- def initialize(lcov_report_path, code_dir, git_dir: '.git', compare: nil)
- @lcov = LcovParser.parse(File.open(lcov_report_path))
- @changeset = Changeset.new(File.join(code_dir, git_dir), compare).update
+ # Initializes a new Undercover::Report
+ #
+ # @param options [Undercover::Options]
+ def initialize(opts)
+ @lcov = LcovParser.parse(File.open(opts.lcov))
+ @code_dir = opts.path
+ git_dir = File.join(opts.path, opts.git_dir)
+ @changeset = Changeset.new(git_dir, opts.compare).update
@results = Hash.new { |hsh, key| hsh[key] = [] }
end
def build
each_result_arg do |filename, coverage, imagen_node|
- results[filename] << Result.new(imagen_node, coverage, filename)
+ results[filename.gsub(/^\.\//, '')] << Result.new(
+ imagen_node, coverage, filename
+ )
end
self
end
# TODO: this is experimental and might be incorrect!
@@ -67,20 +73,19 @@
end
alias to_s inspect
private
- # TODO: some of this could be moved to the imagen gem
# TODO: should that start from changeset.file_paths?
# this way we could report things that weren't even loaded in any spec,
# so is this still good idea? (Rakefile, .gemspec etc)
def each_result_arg
match_all = ->(_) { true }
lcov.source_files.each do |filename, coverage|
- ast = Imagen::Node::Root.new
- Imagen::Visitor.traverse(Parser::CurrentRuby.parse_file(filename), ast)
- ast.children[0].find_all(match_all).each do |node|
- yield(filename, coverage, node)
+ path = File.join(code_dir, filename)
+ root_ast = Imagen::Node::Root.new.build_from_file(path)
+ root_ast.children[0].find_all(match_all).each do |node|
+ yield(path, coverage, node)
end
end
end
end
end