aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorMax Howell2010-09-11 20:22:54 +0100
committerAdam Vandenberg2011-03-12 11:55:02 -0800
commit768910283a40afc2f76ef196d1464f0bbb2349cd (patch)
tree0befe8fb3c3d8e967a34a29b11b6d85ecbfcbc9b /Library/Homebrew/test
parent97f654701d17c8605632a0d77570a2d9c6893ddf (diff)
downloadbrew-768910283a40afc2f76ef196d1464f0bbb2349cd.tar.bz2
Refactor the brew command into one file per command
The code was sucking. To the extent that maintenance was hard. It's a lot easier to work with code that is sensibly split at sensible boundaries. So now it is more like that. But the refactor is minimal. Because we don't want you to have more merge hell than absolutely necessary. If you merge you will need to pay attention to brew.h.rb (as it is deleted) and bin/brew (as command logic is gone). It will be painful, but you will just have to help git out by moving any changes around manually. Note compatibility.rb. It ensures that any function renames or removals don't break anything. We're pretty serious about backwards compatibility. And that's because we encourage you to hack around with the innards. And we couldn't do that if we would then just make stuff disappear behind your back.
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/test_ENV.rb1
-rw-r--r--Library/Homebrew/test/test_bucket.rb28
-rw-r--r--Library/Homebrew/test/test_external_deps.rb34
-rw-r--r--Library/Homebrew/test/test_formula.rb1
-rw-r--r--Library/Homebrew/test/test_formula_install.rb2
-rw-r--r--Library/Homebrew/test/test_updater.rb2
-rw-r--r--Library/Homebrew/test/testing_env.rb6
7 files changed, 34 insertions, 40 deletions
diff --git a/Library/Homebrew/test/test_ENV.rb b/Library/Homebrew/test/test_ENV.rb
index 1cd716dfd..da3a9d6af 100644
--- a/Library/Homebrew/test/test_ENV.rb
+++ b/Library/Homebrew/test/test_ENV.rb
@@ -1,6 +1,5 @@
require 'testing_env'
require 'utils'
-require 'brew.h'
require 'extend/ENV'
ENV.extend(HomebrewEnvExtension)
diff --git a/Library/Homebrew/test/test_bucket.rb b/Library/Homebrew/test/test_bucket.rb
index 8492b4929..086297dd2 100644
--- a/Library/Homebrew/test/test_bucket.rb
+++ b/Library/Homebrew/test/test_bucket.rb
@@ -5,7 +5,6 @@ ARGV.extend(HomebrewArgvExtension)
require 'test/testball'
require 'utils'
-require 'brew.h'
class MockFormula <Formula
def initialize url
@@ -79,19 +78,24 @@ class BeerTasting < Test::Unit::TestCase
# end
def test_brew_h
+ require 'cmd/info'
+ require 'cmd/prune'
+ require 'cleaner'
+
nostdout do
assert_nothing_raised do
f=TestBall.new
- make f.url
- info f
- clean f
- prune
+ Homebrew.info_formula f
+ Cleaner.new f
+ Homebrew.prune
#TODO test diy function too
end
end
end
def test_brew_cleanup
+ require 'cmd/cleanup'
+
f1=TestBall.new
f1.instance_eval { @version = "0.1" }
f2=TestBall.new
@@ -110,7 +114,7 @@ class BeerTasting < Test::Unit::TestCase
assert f3.installed?
nostdout do
- cleanup f3
+ Homebrew.cleanup_formula f3
end
assert !f1.installed?
@@ -175,4 +179,16 @@ class BeerTasting < Test::Unit::TestCase
assert_equal 'foo-0.1', foo1.stem
assert_equal '0.1', foo1.version
end
+
+ class MockMockFormula < Struct.new(:name); end
+
+ def test_formula_equality
+ f = MockFormula.new('http://example.com/test-0.1.tgz')
+ g = MockMockFormula.new('test')
+
+ assert f == f
+ assert f == g
+ assert f.eql? f
+ assert (not (f.eql? g))
+ end
end
diff --git a/Library/Homebrew/test/test_external_deps.rb b/Library/Homebrew/test/test_external_deps.rb
index 2b96e7678..30b3540d9 100644
--- a/Library/Homebrew/test/test_external_deps.rb
+++ b/Library/Homebrew/test/test_external_deps.rb
@@ -3,38 +3,12 @@ require 'testing_env'
require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser
ARGV.extend(HomebrewArgvExtension)
+require 'extend/string'
require 'test/testball'
require 'formula_installer'
require 'utils'
-# Custom formula installer that checks deps but does not
-# run the install code. We also override the external dep
-# install messages, so for instance the Python check doesnt
-# look for the pip formula (which isn't avaialble in test
-# mode.)
-class DontActuallyInstall < FormulaInstaller
- def install_private f ; end
-
- def pyerr dep
- "Python module install message."
- end
-
- def plerr dep
- "Perl module install message."
- end
-
- def rberr dep
- "Ruby module install message."
- end
-
- def jrberr dep
- "JRuby module install message."
- end
-end
-
-
-
class BadPerlBall <TestBall
depends_on "notapackage" => :perl
@@ -102,14 +76,14 @@ end
class ExternalDepsTests < Test::Unit::TestCase
def check_deps_fail f
- assert_raises(RuntimeError) do
- DontActuallyInstall.new.install f.new
+ assert_raises(UnsatisfiedExternalDependencyError) do
+ FormulaInstaller.check_external_deps f.new
end
end
def check_deps_pass f
assert_nothing_raised do
- DontActuallyInstall.new.install f.new
+ FormulaInstaller.check_external_deps f.new
end
end
diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb
index aa545f6d4..fd3987168 100644
--- a/Library/Homebrew/test/test_formula.rb
+++ b/Library/Homebrew/test/test_formula.rb
@@ -5,7 +5,6 @@ ARGV.extend(HomebrewArgvExtension)
require 'test/testball'
require 'utils'
-require 'brew.h'
class MostlyAbstractFormula <Formula
diff --git a/Library/Homebrew/test/test_formula_install.rb b/Library/Homebrew/test/test_formula_install.rb
index db1a2b103..059d7656b 100644
--- a/Library/Homebrew/test/test_formula_install.rb
+++ b/Library/Homebrew/test/test_formula_install.rb
@@ -26,7 +26,7 @@ class ConfigureTests < Test::Unit::TestCase
f=ConfigureFails.new
begin
f.brew { f.install }
- rescue ExecutionError => e
+ rescue BuildError => e
assert e.was_running_configure?
end
end
diff --git a/Library/Homebrew/test/test_updater.rb b/Library/Homebrew/test/test_updater.rb
index 1d733560b..5659f9c67 100644
--- a/Library/Homebrew/test/test_updater.rb
+++ b/Library/Homebrew/test/test_updater.rb
@@ -7,7 +7,7 @@ ARGV.extend(HomebrewArgvExtension)
require 'formula'
require 'utils'
-require 'update'
+require 'cmd/update'
class RefreshBrewMock < RefreshBrew
def in_prefix_expect(expect, returns = '')
diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb
index ffc8b3003..0933185bb 100644
--- a/Library/Homebrew/test/testing_env.rb
+++ b/Library/Homebrew/test/testing_env.rb
@@ -8,6 +8,7 @@ ABS__FILE__=File.expand_path(__FILE__)
$:.push(File.expand_path(__FILE__+'/../..'))
require 'extend/pathname'
+require 'exceptions'
# these are defined in global.rb, but we don't want to break our actual
# homebrew tree, and we do want to test everything :)
@@ -26,4 +27,9 @@ at_exit { HOMEBREW_PREFIX.parent.rmtree }
# Test fixtures and files can be found relative to this path
TEST_FOLDER = Pathname.new(ABS__FILE__).parent.realpath
+require 'fileutils'
+module Homebrew extend self
+ include FileUtils
+end
+
require 'test/unit' # must be after at_exit