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