diff options
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/refresh_brew.rb | 6 | ||||
| -rwxr-xr-x | Library/Homebrew/unittest.rb | 24 |
2 files changed, 25 insertions, 5 deletions
diff --git a/Library/Homebrew/refresh_brew.rb b/Library/Homebrew/refresh_brew.rb index d3b683fbb..18183e292 100644 --- a/Library/Homebrew/refresh_brew.rb +++ b/Library/Homebrew/refresh_brew.rb @@ -1,4 +1,5 @@ class RefreshBrew + CHECKOUT_COMMAND = 'git checkout masterbrew' UPDATE_COMMAND = 'git pull origin masterbrew' REVISION_COMMAND = 'git log -l -1 --pretty=format:%H' GIT_UP_TO_DATE = 'Already up-to-date.' @@ -13,6 +14,7 @@ class RefreshBrew # Performs an update of the homebrew source. Returns +true+ if a newer # version was available, +false+ if already up-to-date. def update_from_masterbrew! + git_checkout_masterbrew! output = git_pull! output.split("\n").each do |line| @updated_formulae << $1 if line =~ UPDATED_FORMULA @@ -34,6 +36,10 @@ class RefreshBrew Dir.chdir(HOMEBREW_PREFIX) { yield } end + def git_checkout_masterbrew! + in_prefix { `#{CHECKOUT_COMMAND}` } + end + def git_pull! in_prefix { `#{UPDATE_COMMAND}` } end diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb index 48e4650d4..6c1239c7f 100755 --- a/Library/Homebrew/unittest.rb +++ b/Library/Homebrew/unittest.rb @@ -84,17 +84,27 @@ class TestScriptFileFormula <ScriptFileFormula end class RefreshBrewMock < RefreshBrew - def in_prefix_expect(expect, returns) - @expect, @returns = expect, returns + def in_prefix_expect(expect, returns = '') + @expect ||= {} + @expect[expect] = returns end def `(cmd) - if Dir.pwd == HOMEBREW_PREFIX.to_s and cmd == @expect - @returns + if Dir.pwd == HOMEBREW_PREFIX.to_s and @expect.has_key?(cmd) + (@called ||= []) << cmd + @expect[cmd] else - raise "<#{inspect}> Called backticks in pwd `#{HOMEBREW_PREFIX}' and command `#{cmd}'" + raise "#{inspect} Unexpectedly called backticks in pwd `#{HOMEBREW_PREFIX}' and command `#{cmd}'" end end + + def expectations_met? + @expect.keys == @called + end + + def inspect + "#<#{self.class.name} #{object_id}>" + end end def nostdout @@ -504,9 +514,11 @@ class BeerTasting <Test::Unit::TestCase def test_updater_update_homebrew_without_any_changes outside_prefix do updater = RefreshBrewMock.new + updater.in_prefix_expect("git checkout masterbrew") updater.in_prefix_expect("git pull origin masterbrew", "Already up-to-date.\n") assert_equal false, updater.update_from_masterbrew! + assert updater.expectations_met? assert updater.updated_formulae.empty? end end @@ -514,6 +526,7 @@ class BeerTasting <Test::Unit::TestCase def test_updater_update_homebrew_without_formulae_changes outside_prefix do updater = RefreshBrewMock.new + updater.in_prefix_expect("git checkout masterbrew") output = fixture('update_git_pull_output_without_formulae_changes') updater.in_prefix_expect("git pull origin masterbrew", output) @@ -526,6 +539,7 @@ class BeerTasting <Test::Unit::TestCase def test_updater_update_homebrew_with_formulae_changes outside_prefix do updater = RefreshBrewMock.new + updater.in_prefix_expect("git checkout masterbrew") output = fixture('update_git_pull_output_with_formulae_changes') updater.in_prefix_expect("git pull origin masterbrew", output) |
