diff options
| author | Mislav Marohnić | 2011-06-12 17:07:59 +0200 |
|---|---|---|
| committer | Adam Vandenberg | 2011-06-14 14:47:39 -0700 |
| commit | 8c521ca3d0d1b1579f8f1ef3f76021217e485613 (patch) | |
| tree | 413eb0113a65a1e09821002048eb12e5aa429e09 /Library/Homebrew/test | |
| parent | 5fdb145e76e41889668e797d81dfd314cf7dd72d (diff) | |
| download | brew-8c521ca3d0d1b1579f8f1ef3f76021217e485613.tar.bz2 | |
refactor `update` command to use git diff instead of parsing `pull` output
This fixes reporting of which formulae changed in git versions where `pull`
output is not compatible.
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Diffstat (limited to 'Library/Homebrew/test')
| -rw-r--r-- | Library/Homebrew/test/fixtures/updater_fixture.yaml | 79 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_updater.rb | 75 |
2 files changed, 78 insertions, 76 deletions
diff --git a/Library/Homebrew/test/fixtures/updater_fixture.yaml b/Library/Homebrew/test/fixtures/updater_fixture.yaml index 55e9d0f40..b3dd14d23 100644 --- a/Library/Homebrew/test/fixtures/updater_fixture.yaml +++ b/Library/Homebrew/test/fixtures/updater_fixture.yaml @@ -1,53 +1,26 @@ -update_git_pull_output_without_formulae_changes: | - remote: counting objects: 58, done. - remote: Compressing objects: 100% (35/35), done. - remote: Total 39 (delta 20), reused 0 (delta 0) - Unpacking objects: 100% (39/39), done. - From git://github.com/mxcl/homebrew - * branch master -> FETCH_HEAD - Updating 14ef7f9..f414bc8 - Fast forward - Library/Homebrew/ARGV+yeast.rb | 35 ++-- - Library/Homebrew/beer_events.rb | 181 +++++++++++++ - Library/Homebrew/hardware.rb | 71 ++++++ - Library/Homebrew/hw.model.c | 17 -- - README | 337 +++++++++++++------------ - bin/brew | 137 ++++++++--- - 40 files changed, 1107 insertions(+), 426 deletions(-) - create mode 100644 Library/Homebrew/beer_events.rb - create mode 100644 Library/Homebrew/hardware.rb - delete mode 100644 Library/Homebrew/hw.model.c - delete mode 100644 Library/Homebrew/hw.model.rb -update_git_pull_output_with_formulae_changes: | - remote: counting objects: 58, done. - remote: Compressing objects: 100% (35/35), done. - remote: Total 39 (delta 20), reused 0 (delta 0) - Unpacking objects: 100% (39/39), done. - From git://github.com/mxcl/homebrew - * branch master -> FETCH_HEAD - Updating 14ef7f9..f414bc8 - Fast forward - Library/Contributions/brew_bash_completion.sh | 6 +- - Library/Formula/antiword.rb | 13 + - Library/Formula/bash-completion.rb | 25 ++ - Library/Formula/xar.rb | 19 ++ - Library/Formula/yajl.rb | 2 +- - Library/Homebrew/ARGV+yeast.rb | 35 ++-- - Library/Homebrew/beer_events.rb | 181 +++++++++++++ - Library/Homebrew/hardware.rb | 71 ++++++ - Library/Homebrew/hw.model.c | 17 -- - Library/Homebrew/pathname+yeast.rb | 28 ++- - Library/Homebrew/unittest.rb | 106 ++++++++- - Library/Homebrew/utils.rb | 36 ++- - README | 337 +++++++++++++------------ - bin/brew | 137 ++++++++--- - 40 files changed, 1107 insertions(+), 426 deletions(-) - create mode 100644 Library/Formula/antiword.rb - create mode 100644 Library/Formula/bash-completion.rb - create mode 100644 Library/Formula/ddrescue.rb - create mode 100644 Library/Formula/dict.rb - create mode 100644 Library/Formula/lua.rb - create mode 100644 Library/Homebrew/beer_events.rb - create mode 100644 Library/Homebrew/hardware.rb - delete mode 100644 Library/Homebrew/hw.model.c - delete mode 100644 Library/Homebrew/hw.model.rb +update_git_diff_output_without_formulae_changes: | + M Library/Homebrew/ARGV+yeast.rb + A Library/Homebrew/beer_events.rb + A Library/Homebrew/hardware.rb + D Library/Homebrew/hw.model.c + M README + M bin/brew +update_git_diff_output_with_formulae_changes: | + M Library/Contributions/brew_bash_completion.sh + A Library/Formula/antiword.rb + A Library/Formula/bash-completion.rb + M Library/Formula/xar.rb + M Library/Formula/yajl.rb + M Library/Homebrew/ARGV+yeast.rb + M Library/Homebrew/pathname+yeast.rb + M Library/Homebrew/unittest.rb + M Library/Homebrew/utils.rb + M README + M bin/brew + A Library/Formula/ddrescue.rb + A Library/Formula/dict.rb + A Library/Formula/lua.rb + A Library/Homebrew/beer_events.rb + A Library/Homebrew/hardware.rb + D Library/Homebrew/hw.model.c + D Library/Homebrew/hw.model.rb diff --git a/Library/Homebrew/test/test_updater.rb b/Library/Homebrew/test/test_updater.rb index 348658d25..b5247f684 100644 --- a/Library/Homebrew/test/test_updater.rb +++ b/Library/Homebrew/test/test_updater.rb @@ -11,15 +11,23 @@ require 'utils' require 'cmd/update' class RefreshBrewMock < RefreshBrew - def in_prefix_expect(expect, returns = '') - @expect ||= {} - @expect[expect] = returns + def git_repo? + @git_repo + end + attr_writer :git_repo + + def in_prefix_expect(cmd, output = '') + @outputs ||= Hash.new { |h,k| h[k] = [] } + @expected ||= [] + @expected << cmd + @outputs[cmd] << output end def `(cmd) - if Dir.pwd == HOMEBREW_PREFIX.to_s and @expect.has_key?(cmd) - (@called ||= []) << cmd - @expect[cmd] + if Dir.pwd == HOMEBREW_PREFIX.to_s and @expected.include?(cmd) and !@outputs[cmd].empty? + @called ||= [] + @called << cmd + @outputs[cmd].shift else raise "#{inspect} Unexpectedly called backticks in pwd `#{HOMEBREW_PREFIX}' and command `#{cmd}'" end @@ -28,7 +36,7 @@ class RefreshBrewMock < RefreshBrew alias safe_system ` def expectations_met? - @expect.keys.sort == @called.sort + @expected == @called end def inspect @@ -54,11 +62,30 @@ class UpdaterTests < Test::Unit::TestCase @fixture_data end + def test_init_homebrew + outside_prefix do + updater = RefreshBrewMock.new + updater.git_repo = false + updater.in_prefix_expect("git init") + updater.in_prefix_expect("git pull #{RefreshBrewMock::REPOSITORY_URL} master") + updater.in_prefix_expect("git rev-parse HEAD", "1234abcd") + + assert_equal false, updater.update_from_masterbrew! + assert updater.expectations_met? + assert updater.updated_formulae.empty? + assert updater.added_formulae.empty? + end + end + def test_update_homebrew_without_any_changes outside_prefix do updater = RefreshBrewMock.new - updater.in_prefix_expect(RefreshBrew::INIT_COMMAND) - updater.in_prefix_expect(RefreshBrew::UPDATE_COMMAND, "Already up-to-date.\n") + updater.git_repo = true + updater.in_prefix_expect("git checkout -q master") + updater.in_prefix_expect("git rev-parse HEAD", "1234abcd") + updater.in_prefix_expect("git pull #{RefreshBrewMock::REPOSITORY_URL} master") + updater.in_prefix_expect("git rev-parse HEAD", "3456cdef") + updater.in_prefix_expect("git diff-tree -r --name-status -z 1234abcd 3456cdef", "") assert_equal false, updater.update_from_masterbrew! assert updater.expectations_met? @@ -70,9 +97,14 @@ class UpdaterTests < Test::Unit::TestCase def test_update_homebrew_without_formulae_changes outside_prefix do updater = RefreshBrewMock.new - updater.in_prefix_expect(RefreshBrew::INIT_COMMAND) - output = fixture('update_git_pull_output_without_formulae_changes') - updater.in_prefix_expect(RefreshBrew::UPDATE_COMMAND, output) + updater.git_repo = true + diff_output = fixture('update_git_diff_output_without_formulae_changes') + + updater.in_prefix_expect("git checkout -q master") + updater.in_prefix_expect("git rev-parse HEAD", "1234abcd") + updater.in_prefix_expect("git pull #{RefreshBrewMock::REPOSITORY_URL} master") + updater.in_prefix_expect("git rev-parse HEAD", "3456cdef") + updater.in_prefix_expect("git diff-tree -r --name-status -z 1234abcd 3456cdef", diff_output.gsub(/\s+/, "\0")) assert_equal true, updater.update_from_masterbrew! assert !updater.pending_formulae_changes? @@ -84,9 +116,14 @@ class UpdaterTests < Test::Unit::TestCase def test_update_homebrew_with_formulae_changes outside_prefix do updater = RefreshBrewMock.new - updater.in_prefix_expect(RefreshBrew::INIT_COMMAND) - output = fixture('update_git_pull_output_with_formulae_changes') - updater.in_prefix_expect(RefreshBrew::UPDATE_COMMAND, output) + updater.git_repo = true + diff_output = fixture('update_git_diff_output_with_formulae_changes') + + updater.in_prefix_expect("git checkout -q master") + updater.in_prefix_expect("git rev-parse HEAD", "1234abcd") + updater.in_prefix_expect("git pull #{RefreshBrewMock::REPOSITORY_URL} master") + updater.in_prefix_expect("git rev-parse HEAD", "3456cdef") + updater.in_prefix_expect("git diff-tree -r --name-status -z 1234abcd 3456cdef", diff_output.gsub(/\s+/, "\0")) assert_equal true, updater.update_from_masterbrew! assert updater.pending_formulae_changes? @@ -94,12 +131,4 @@ class UpdaterTests < Test::Unit::TestCase assert_equal %w{ antiword bash-completion ddrescue dict lua }, updater.added_formulae end end - - def test_updater_returns_current_revision - outside_prefix do - updater = RefreshBrewMock.new - updater.in_prefix_expect(RefreshBrew::REVISION_COMMAND, 'the-revision-hash') - assert_equal 'the-revision-hash', updater.current_revision - end - end end |
