Separate reading and parsing the diff

This commit is contained in:
Jack Nagel 2014-07-26 20:11:53 -05:00
parent 6baf357f8c
commit 802775078c
2 changed files with 8 additions and 2 deletions

View File

@ -172,7 +172,7 @@ class Updater
map = Hash.new{ |h,k| h[k] = [] }
if initial_revision && initial_revision != current_revision
`git diff-tree -r --name-status --diff-filter=AMD #{initial_revision} #{current_revision}`.each_line do |line|
diff.each_line do |line|
status, path = line.split
map[status.to_sym] << repository.join(path)
end
@ -187,6 +187,10 @@ class Updater
`git rev-parse -q --verify HEAD`.chomp
end
def diff
`git diff-tree -r --name-status --diff-filter=AMD #{initial_revision} #{current_revision}`
end
def `(cmd)
out = super
if $? && !$?.success?

View File

@ -4,6 +4,8 @@ require 'yaml'
class UpdaterTests < Homebrew::TestCase
class UpdaterMock < ::Updater
attr_accessor :diff
def initialize(*)
super
@outputs = Hash.new { |h, k| h[k] = [] }
@ -51,12 +53,12 @@ class UpdaterTests < Homebrew::TestCase
def perform_update(diff_output="")
HOMEBREW_REPOSITORY.cd do
@updater.diff = diff_output
@updater.in_repo_expect("git checkout -q master")
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "1234abcd")
@updater.in_repo_expect("git config core.autocrlf false")
@updater.in_repo_expect("git pull -q origin refs/heads/master:refs/remotes/origin/master")
@updater.in_repo_expect("git rev-parse -q --verify HEAD", "3456cdef")
@updater.in_repo_expect("git diff-tree -r --name-status --diff-filter=AMD 1234abcd 3456cdef", diff_output)
@updater.pull!
@report.update(@updater.report)
end