aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorEloy Duran2009-09-11 19:39:13 +0200
committerEloy Duran2009-09-17 00:24:11 +0200
commitbb03db8e6c635dd8e9db0b9ddd3c20af8e4968c8 (patch)
tree265b6a8632ddf0743ca5a9cd357bc31d20a46f4d /Library
parent4691fcb3d70541d24e0b5a7e35d27ca82ff40bce (diff)
downloadbrew-bb03db8e6c635dd8e9db0b9ddd3c20af8e4968c8.tar.bz2
Before trying to update, first checkout the masterbrew branch.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/refresh_brew.rb6
-rwxr-xr-xLibrary/Homebrew/unittest.rb24
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)