aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/test/fixtures/updater_fixture.yaml57
-rw-r--r--Library/Homebrew/test/test_bucket.rb299
-rw-r--r--Library/Homebrew/test/test_checksums.rb57
-rw-r--r--Library/Homebrew/test/test_inreplace.rb33
-rw-r--r--Library/Homebrew/test/test_updater.rb67
-rw-r--r--Library/Homebrew/test/test_versions.rb106
-rwxr-xr-xLibrary/Homebrew/test/unittest.rb588
7 files changed, 624 insertions, 583 deletions
diff --git a/Library/Homebrew/test/fixtures/updater_fixture.yaml b/Library/Homebrew/test/fixtures/updater_fixture.yaml
new file mode 100644
index 000000000..2e6e6d1ce
--- /dev/null
+++ b/Library/Homebrew/test/fixtures/updater_fixture.yaml
@@ -0,0 +1,57 @@
+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
+ delete mode 100644 Library/Formula/antiword.rb
+ delete mode 100644 Library/Formula/bash-completion.rb
+ delete mode 100644 Library/Formula/xar.rb
+ delete mode 100644 Library/Formula/yajl.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 \ No newline at end of file
diff --git a/Library/Homebrew/test/test_bucket.rb b/Library/Homebrew/test/test_bucket.rb
new file mode 100644
index 000000000..72151d875
--- /dev/null
+++ b/Library/Homebrew/test/test_bucket.rb
@@ -0,0 +1,299 @@
+# All other tests so far -- feel free to break them out into
+# separate TestCase classes.
+
+class BeerTasting < Test::Unit::TestCase
+ def test_put_columns_empty
+ assert_nothing_raised do
+ # Issue #217 put columns with new results fails.
+ puts_columns []
+ end
+ end
+
+ def test_supported_compressed_types
+ assert_nothing_raised do
+ MockFormula.new 'test-0.1.tar.gz'
+ MockFormula.new 'test-0.1.tar.bz2'
+ MockFormula.new 'test-0.1.tgz'
+ MockFormula.new 'test-0.1.bgz'
+ MockFormula.new 'test-0.1.zip'
+ end
+ end
+
+ def test_prefix
+ nostdout do
+ TestBall.new.brew do |f|
+ assert_equal File.expand_path(f.prefix), (HOMEBREW_CELLAR+f.name+'0.1').to_s
+ assert_kind_of Pathname, f.prefix
+ end
+ end
+ end
+
+ def test_no_version
+ assert_nil Pathname.new("http://example.com/blah.tar").version
+ assert_nil Pathname.new("arse").version
+ end
+
+ def test_bad_version
+ assert_raises(RuntimeError) {f=TestBadVersion.new}
+ end
+
+ def test_install
+ f=TestBall.new
+
+ assert_equal Formula.path(f.name), f.path
+ assert !f.installed?
+
+ nostdout do
+ f.brew do
+ f.install
+ end
+ end
+
+ assert_match Regexp.new("^#{HOMEBREW_CELLAR}/"), f.prefix.to_s
+
+ assert f.bin.directory?
+ assert_equal 3, f.bin.children.length
+ libexec=f.prefix+'libexec'
+ assert libexec.directory?
+ assert_equal 1, libexec.children.length
+ assert !(f.prefix+'main.c').exist?
+ assert f.installed?
+
+ keg=Keg.new f.prefix
+ keg.link
+ assert_equal 2, HOMEBREW_PREFIX.children.length
+ assert (HOMEBREW_PREFIX+'bin').directory?
+ assert_equal 3, (HOMEBREW_PREFIX+'bin').children.length
+
+ keg.uninstall
+ assert !keg.exist?
+ assert !f.installed?
+ end
+
+ def test_script_install
+ f=TestScriptFileFormula.new
+
+ nostdout do
+ f.brew do
+ f.install
+ end
+ end
+
+ assert_equal 1, f.bin.children.length
+ end
+
+ FOOBAR='foo-bar'
+ def test_formula_funcs
+ classname=Formula.class_s(FOOBAR)
+ path=Formula.path(FOOBAR)
+
+ assert_equal "FooBar", classname
+ assert_match Regexp.new("^#{HOMEBREW_PREFIX}/Library/Formula"), path.to_s
+
+ path=HOMEBREW_PREFIX+'Library'+'Formula'+"#{FOOBAR}.rb"
+ path.dirname.mkpath
+ File.open(path, 'w') do |f|
+ f << %{
+ require 'formula'
+ class #{classname} < Formula
+ @url=''
+ def initialize(*args)
+ @homepage = 'http://example.com/'
+ super
+ end
+ end
+ }
+ end
+
+ assert_not_nil Formula.factory(FOOBAR)
+ end
+
+ def test_cant_override_brew
+ assert_raises(RuntimeError) { TestBallOverrideBrew.new }
+ end
+
+ def test_abstract_formula
+ f=MostlyAbstractFormula.new
+ assert_equal '__UNKNOWN__', f.name
+ assert_raises(RuntimeError) { f.prefix }
+ nostdout { assert_raises(RuntimeError) { f.brew } }
+ end
+
+ def test_zip
+ nostdout { assert_nothing_raised { TestZip.new.brew {} } }
+ end
+
+ # needs resurrecting
+ # def test_no_ARGV_dupes
+ # ARGV.reset
+ # ARGV << 'foo' << 'foo'
+ # n=0
+ # ARGV.named.each{|f| n+=1 if f == 'foo'}
+ # assert_equal 1, n
+ # end
+
+ def test_ARGV
+ assert_raises(FormulaUnspecifiedError) { ARGV.formulae }
+ assert_raises(KegUnspecifiedError) { ARGV.kegs }
+ assert ARGV.named.empty?
+
+ (HOMEBREW_CELLAR+'mxcl'+'10.0').mkpath
+
+ ARGV.reset
+ ARGV.unshift 'mxcl'
+ assert_equal 1, ARGV.named.length
+ assert_equal 1, ARGV.kegs.length
+ assert_raises(FormulaUnavailableError) { ARGV.formulae }
+ end
+
+ # these will raise if we don't recognise your mac, but that prolly
+ # indicates something went wrong rather than we don't know
+ def test_hardware_cpu_type
+ assert [:intel, :ppc].include?(Hardware.cpu_type)
+ end
+
+ def test_hardware_intel_family
+ if Hardware.cpu_type == :intel
+ assert [:core, :core2, :penryn, :nehalem].include?(Hardware.intel_family)
+ end
+ end
+
+ def test_brew_h
+ nostdout do
+ assert_nothing_raised do
+ f=TestBall.new
+ make f.url
+ info f.name
+ clean f
+ prune
+ #TODO test diy function too
+ end
+ end
+ end
+
+ def test_brew_cleanup
+ f1=TestBall.new
+ f1.instance_eval { @version = "0.1" }
+ f2=TestBall.new
+ f2.instance_eval { @version = "0.2" }
+ f3=TestBall.new
+ f3.instance_eval { @version = "0.3" }
+
+ nostdout do
+ f1.brew { f1.install }
+ f2.brew { f2.install }
+ f3.brew { f3.install }
+ end
+
+ assert f1.installed?
+ assert f2.installed?
+ assert f3.installed?
+
+ nostdout do
+ cleanup f3
+ end
+
+ assert !f1.installed?
+ assert !f2.installed?
+ assert f3.installed?
+ end
+
+ def test_my_float_assumptions
+ # this may look ridiculous but honestly there's code in brewit that depends on
+ # this behaviour so I wanted to be certain Ruby floating points are behaving
+ f='10.6'.to_f
+ assert_equal 10.6, f
+ assert f >= 10.6
+ assert f <= 10.6
+ assert_equal 10.5, f-0.1
+ assert_equal 10.7, f+0.1
+ end
+
+ def test_arch_for_command
+ arches=archs_for_command '/usr/bin/svn'
+ if `sw_vers -productVersion` =~ /10\.(\d+)/ and $1.to_i >= 6
+ assert_equal 3, arches.length
+ assert arches.include?(:x86_64)
+ else
+ assert_equal 2, arches.length
+ end
+ assert arches.include?(:i386)
+ assert arches.include?(:ppc7400)
+ end
+
+ def test_pathname_version
+ d=HOMEBREW_CELLAR+'foo-0.1.9'
+ d.mkpath
+ assert_equal '0.1.9', d.version
+ end
+
+ def test_pathname_plus_yeast
+ nostdout do
+ assert_nothing_raised do
+ assert !Pathname.getwd.rmdir_if_possible
+ assert !Pathname.getwd.abv.empty?
+
+ abcd=orig_abcd=HOMEBREW_CACHE+'abcd'
+ FileUtils.cp ABS__FILE__, abcd
+ abcd=HOMEBREW_PREFIX.install abcd
+ assert (HOMEBREW_PREFIX+orig_abcd.basename).exist?
+ assert abcd.exist?
+ assert_equal HOMEBREW_PREFIX+'abcd', abcd
+
+ assert_raises(RuntimeError) {abcd.write 'CONTENT'}
+ abcd.unlink
+ abcd.write 'HELLOWORLD'
+ assert_equal 'HELLOWORLD', File.read(abcd)
+
+ assert !orig_abcd.exist?
+ rv=abcd.cp orig_abcd
+ assert orig_abcd.exist?
+ assert_equal rv, orig_abcd
+
+ orig_abcd.unlink
+ assert !orig_abcd.exist?
+ abcd.cp HOMEBREW_CACHE
+ assert orig_abcd.exist?
+
+ foo1=HOMEBREW_CACHE+'foo-0.1.tar.gz'
+ FileUtils.cp ABS__FILE__, foo1
+ assert foo1.file?
+
+ assert_equal '.tar.gz', foo1.extname
+ assert_equal 'foo-0.1', foo1.stem
+ assert_equal '0.1', foo1.version
+
+ HOMEBREW_CACHE.chmod_R 0777
+ end
+ end
+
+ assert_raises(RuntimeError) {Pathname.getwd.install 'non_existant_file'}
+ end
+
+ def test_formula_class_func
+ assert_equal Formula.class_s('s-lang'), 'SLang'
+ assert_equal Formula.class_s('pkg-config'), 'PkgConfig'
+ assert_equal Formula.class_s('foo_bar'), 'FooBar'
+ end
+
+ def test_class_names
+ assert_equal 'ShellFm', Formula.class_s('shell.fm')
+ assert_equal 'Fooxx', Formula.class_s('foo++')
+ end
+
+ def test_ENV_options
+ require 'extend/ENV'
+ ENV.extend(HomebrewEnvExtension)
+
+ ENV.gcc_4_0
+ ENV.gcc_4_2
+ ENV.O3
+ ENV.minimal_optimization
+ ENV.no_optimization
+ ENV.libxml2
+ ENV.x11
+ ENV.enable_warnings
+ assert !ENV.cc.empty?
+ assert !ENV.cxx.empty?
+ end
+end
diff --git a/Library/Homebrew/test/test_checksums.rb b/Library/Homebrew/test/test_checksums.rb
new file mode 100644
index 000000000..d93af908a
--- /dev/null
+++ b/Library/Homebrew/test/test_checksums.rb
@@ -0,0 +1,57 @@
+class ChecksumTests < Test::Unit::TestCase
+ def test_md5
+ valid_md5 = Class.new(TestBall) do
+ @md5='71aa838a9e4050d1876a295a9e62cbe6'
+ end
+
+ assert_nothing_raised { nostdout { valid_md5.new.brew {} } }
+ end
+
+ def test_badmd5
+ invalid_md5 = Class.new(TestBall) do
+ @md5='61aa838a9e4050d1876a295a9e62cbe6'
+ end
+
+ assert_raises RuntimeError do
+ nostdout { invalid_md5.new.brew {} }
+ end
+ end
+
+ def test_sha1
+ valid_sha1 = Class.new(TestBall) do
+ @sha1='6ea8a98acb8f918df723c2ae73fe67d5664bfd7e'
+ end
+
+ assert_nothing_raised { nostdout { valid_sha1.new.brew {} } }
+ end
+
+ def test_badsha1
+ invalid_sha1 = Class.new(TestBall) do
+ @sha1='7ea8a98acb8f918df723c2ae73fe67d5664bfd7e'
+ end
+
+ assert_raises RuntimeError do
+ nostdout { invalid_sha1.new.brew {} }
+ end
+ end
+
+ def test_sha256
+ valid_sha256 = Class.new(TestBall) do
+ @sha256='ccbf5f44743b74add648c7e35e414076632fa3b24463d68d1f6afc5be77024f8'
+ end
+
+ assert_nothing_raised do
+ nostdout { valid_sha256.new.brew {} }
+ end
+ end
+
+ def test_badsha256
+ invalid_sha256 = Class.new(TestBall) do
+ @sha256='dcbf5f44743b74add648c7e35e414076632fa3b24463d68d1f6afc5be77024f8'
+ end
+
+ assert_raises RuntimeError do
+ nostdout { invalid_sha256.new.brew {} }
+ end
+ end
+end
diff --git a/Library/Homebrew/test/test_inreplace.rb b/Library/Homebrew/test/test_inreplace.rb
new file mode 100644
index 000000000..af961101e
--- /dev/null
+++ b/Library/Homebrew/test/test_inreplace.rb
@@ -0,0 +1,33 @@
+class InreplaceTest < Test::Unit::TestCase
+ def test_change_make_var
+ # Replace flag
+ s1="FLAG = abc"
+ s1.extend(HomebrewInreplaceExtension)
+ s1.change_make_var! "FLAG", "def"
+ assert_equal "FLAG=def", s1
+ end
+
+ def test_change_make_var_append
+ # Append to flag
+ s1="FLAG = abc"
+ s1.extend(HomebrewInreplaceExtension)
+ s1.change_make_var! "FLAG", "\\1 def"
+ assert_equal "FLAG=abc def", s1
+ end
+
+ def test_remove_make_var
+ # Replace flag
+ s1="FLAG = abc\nFLAG2 = def"
+ s1.extend(HomebrewInreplaceExtension)
+ s1.remove_make_var! "FLAG"
+ assert_equal "FLAG=\nFLAG2 = def", s1
+ end
+
+ def test_remove_make_vars
+ # Replace flag
+ s1="FLAG = abc\nFLAG2 = def"
+ s1.extend(HomebrewInreplaceExtension)
+ s1.remove_make_var! ["FLAG", "FLAG2"]
+ assert_equal "FLAG=\nFLAG2=", s1
+ end
+end
diff --git a/Library/Homebrew/test/test_updater.rb b/Library/Homebrew/test/test_updater.rb
new file mode 100644
index 000000000..893589983
--- /dev/null
+++ b/Library/Homebrew/test/test_updater.rb
@@ -0,0 +1,67 @@
+class UpdaterTests < Test::Unit::TestCase
+ OUTSIDE_PREFIX = '/tmp'
+ def outside_prefix
+ Dir.chdir(OUTSIDE_PREFIX) { yield }
+ end
+
+ def fixture(name)
+ self.class.fixture_data[name]
+ end
+
+ def self.fixture_data
+ unless @fixture_data
+ require 'yaml'
+ @fixture_data = YAML.load_file(Pathname.new(ABS__FILE__).parent.realpath + 'fixtures/updater_fixture.yaml')
+ end
+ @fixture_data
+ end
+
+ def test_update_homebrew_without_any_changes
+ outside_prefix do
+ updater = RefreshBrewMock.new
+ updater.in_prefix_expect("git checkout master")
+ updater.in_prefix_expect("git pull origin master", "Already up-to-date.\n")
+
+ 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_formulae_changes
+ outside_prefix do
+ updater = RefreshBrewMock.new
+ updater.in_prefix_expect("git checkout master")
+ output = fixture('update_git_pull_output_without_formulae_changes')
+ updater.in_prefix_expect("git pull origin master", output)
+
+ assert_equal true, updater.update_from_masterbrew!
+ assert !updater.pending_formulae_changes?
+ assert updater.updated_formulae.empty?
+ assert updater.added_formulae.empty?
+ end
+ end
+
+ def test_update_homebrew_with_formulae_changes
+ outside_prefix do
+ updater = RefreshBrewMock.new
+ updater.in_prefix_expect("git checkout master")
+ output = fixture('update_git_pull_output_with_formulae_changes')
+ updater.in_prefix_expect("git pull origin master", output)
+
+ assert_equal true, updater.update_from_masterbrew!
+ assert updater.pending_formulae_changes?
+ assert_equal %w{ xar yajl }, updater.updated_formulae
+ 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('git log -l -1 --pretty=format:%H', 'the-revision-hash')
+ assert_equal 'the-revision-hash', updater.current_revision
+ end
+ end
+end
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb
new file mode 100644
index 000000000..446b2c8ef
--- /dev/null
+++ b/Library/Homebrew/test/test_versions.rb
@@ -0,0 +1,106 @@
+class VersionTests < Test::Unit::TestCase
+ def test_version_all_dots
+ r=MockFormula.new "http://example.com/foo.bar.la.1.14.zip"
+ assert_equal '1.14', r.version
+ end
+
+ def test_version_underscore_separator
+ r=MockFormula.new "http://example.com/grc_1.1.tar.gz"
+ assert_equal '1.1', r.version
+ end
+
+ def test_boost_version_style
+ r=MockFormula.new "http://example.com/boost_1_39_0.tar.bz2"
+ assert_equal '1.39.0', r.version
+ end
+
+ def test_erlang_version_style
+ r=MockFormula.new "http://erlang.org/download/otp_src_R13B.tar.gz"
+ assert_equal 'R13B', r.version
+ end
+
+ def test_p7zip_version_style
+ r=MockFormula.new "http://kent.dl.sourceforge.net/sourceforge/p7zip/p7zip_9.04_src_all.tar.bz2"
+ assert_equal '9.04', r.version
+ end
+
+ def test_gloox_beta_style
+ r=MockFormula.new "http://camaya.net/download/gloox-1.0-beta7.tar.bz2"
+ assert_equal '1.0-beta7', r.version
+ end
+
+ def test_astyle_verson_style
+ r=MockFormula.new "http://kent.dl.sourceforge.net/sourceforge/astyle/astyle_1.23_macosx.tar.gz"
+ assert_equal '1.23', r.version
+ end
+
+ def test_version_libvorbis
+ r=MockFormula.new "http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.2rc1.tar.bz2"
+ assert_equal '1.2.2rc1', r.version
+ end
+
+ def test_version_dos2unix
+ r=MockFormula.new "http://www.sfr-fresh.com/linux/misc/dos2unix-3.1.tar.gz"
+ assert_equal '3.1', r.version
+ end
+
+ def test_version_internal_dash
+ r=MockFormula.new "http://example.com/foo-arse-1.1-2.tar.gz"
+ assert_equal '1.1-2', r.version
+ end
+
+ def test_version_single_digit
+ r=MockFormula.new "http://example.com/foo_bar.45.tar.gz"
+ assert_equal '45', r.version
+ end
+
+ def test_noseparator_single_digit
+ r=MockFormula.new "http://example.com/foo_bar45.tar.gz"
+ assert_equal '45', r.version
+ end
+
+ def test_version_developer_that_hates_us_format
+ r=MockFormula.new "http://example.com/foo-bar-la.1.2.3.tar.gz"
+ assert_equal '1.2.3', r.version
+ end
+
+ def test_version_regular
+ r=MockFormula.new "http://example.com/foo_bar-1.21.tar.gz"
+ assert_equal '1.21', r.version
+ end
+
+ def test_version_github
+ r=MockFormula.new "http://github.com/lloyd/yajl/tarball/1.0.5"
+ assert_equal '1.0.5', r.version
+ end
+
+ def test_yet_another_version
+ r=MockFormula.new "http://example.com/mad-0.15.1b.tar.gz"
+ assert_equal '0.15.1b', r.version
+ end
+
+ def test_lame_version_style
+ f=MockFormula.new 'http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz'
+ assert_equal '398-2', f.version
+ end
+
+ def test_ruby_version_style
+ f=MockFormula.new 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz'
+ assert_equal '1.9.1-p243', f.version
+ end
+
+ def test_omega_version_style
+ f=MockFormula.new 'http://www.alcyone.com/binaries/omega/omega-0.80.2-src.tar.gz'
+ assert_equal '0.80.2', f.version
+ end
+
+ def test_version_style_rc
+ f=MockFormula.new 'http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz'
+ assert_equal '1.8.0-rc1', f.version
+ end
+
+ def test_angband_version_style
+ f = MockFormula.new 'http://rephial.org/downloads/3.0/angband-3.0.9b-src.tar.gz'
+ assert_equal '3.0.9b', f.version
+ end
+end
diff --git a/Library/Homebrew/test/unittest.rb b/Library/Homebrew/test/unittest.rb
index c69dd5ad4..8dd298563 100755
--- a/Library/Homebrew/test/unittest.rb
+++ b/Library/Homebrew/test/unittest.rb
@@ -148,586 +148,8 @@ module ExtendArgvPlusYeast
end
ARGV.extend ExtendArgvPlusYeast
-
-class BeerTasting <Test::Unit::TestCase
- def test_put_columns_empty
- assert_nothing_raised do
- # Issue #217 put columns with new results fails.
- puts_columns []
- end
- end
-
- def test_version_all_dots
- r=MockFormula.new "http://example.com/foo.bar.la.1.14.zip"
- assert_equal '1.14', r.version
- end
-
- def test_version_underscore_separator
- r=MockFormula.new "http://example.com/grc_1.1.tar.gz"
- assert_equal '1.1', r.version
- end
-
- def test_boost_version_style
- r=MockFormula.new "http://example.com/boost_1_39_0.tar.bz2"
- assert_equal '1.39.0', r.version
- end
-
- def test_erlang_version_style
- r=MockFormula.new "http://erlang.org/download/otp_src_R13B.tar.gz"
- assert_equal 'R13B', r.version
- end
-
- def test_p7zip_version_style
- r=MockFormula.new "http://kent.dl.sourceforge.net/sourceforge/p7zip/p7zip_9.04_src_all.tar.bz2"
- assert_equal '9.04', r.version
- end
-
- def test_gloox_beta_style
- r=MockFormula.new "http://camaya.net/download/gloox-1.0-beta7.tar.bz2"
- assert_equal '1.0-beta7', r.version
- end
-
- def test_astyle_verson_style
- r=MockFormula.new "http://kent.dl.sourceforge.net/sourceforge/astyle/astyle_1.23_macosx.tar.gz"
- assert_equal '1.23', r.version
- end
-
- def test_version_libvorbis
- r=MockFormula.new "http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.2rc1.tar.bz2"
- assert_equal '1.2.2rc1', r.version
- end
-
- def test_dos2unix
- r=MockFormula.new "http://www.sfr-fresh.com/linux/misc/dos2unix-3.1.tar.gz"
- assert_equal '3.1', r.version
- end
-
- def test_version_internal_dash
- r=MockFormula.new "http://example.com/foo-arse-1.1-2.tar.gz"
- assert_equal '1.1-2', r.version
- end
-
- def test_version_single_digit
- r=MockFormula.new "http://example.com/foo_bar.45.tar.gz"
- assert_equal '45', r.version
- end
-
- def test_noseparator_single_digit
- r=MockFormula.new "http://example.com/foo_bar45.tar.gz"
- assert_equal '45', r.version
- end
-
- def test_version_developer_that_hates_us_format
- r=MockFormula.new "http://example.com/foo-bar-la.1.2.3.tar.gz"
- assert_equal '1.2.3', r.version
- end
-
- def test_version_regular
- r=MockFormula.new "http://example.com/foo_bar-1.21.tar.gz"
- assert_equal '1.21', r.version
- end
-
- def test_version_github
- r=MockFormula.new "http://github.com/lloyd/yajl/tarball/1.0.5"
- assert_equal '1.0.5', r.version
- end
-
- def test_yet_another_version
- r=MockFormula.new "http://example.com/mad-0.15.1b.tar.gz"
- assert_equal '0.15.1b', r.version
- end
-
- def test_supported_compressed_types
- assert_nothing_raised do
- MockFormula.new 'test-0.1.tar.gz'
- MockFormula.new 'test-0.1.tar.bz2'
- MockFormula.new 'test-0.1.tgz'
- MockFormula.new 'test-0.1.bgz'
- MockFormula.new 'test-0.1.zip'
- end
- end
-
- def test_prefix
- nostdout do
- TestBall.new.brew do |f|
- assert_equal File.expand_path(f.prefix), (HOMEBREW_CELLAR+f.name+'0.1').to_s
- assert_kind_of Pathname, f.prefix
- end
- end
- end
-
- def test_no_version
- assert_nil Pathname.new("http://example.com/blah.tar").version
- assert_nil Pathname.new("arse").version
- end
-
- def test_bad_version
- assert_raises(RuntimeError) {f=TestBadVersion.new}
- end
-
- def test_install
- f=TestBall.new
-
- assert_equal Formula.path(f.name), f.path
- assert !f.installed?
-
- nostdout do
- f.brew do
- f.install
- end
- end
-
- assert_match Regexp.new("^#{HOMEBREW_CELLAR}/"), f.prefix.to_s
-
- assert f.bin.directory?
- assert_equal 3, f.bin.children.length
- libexec=f.prefix+'libexec'
- assert libexec.directory?
- assert_equal 1, libexec.children.length
- assert !(f.prefix+'main.c').exist?
- assert f.installed?
-
- keg=Keg.new f.prefix
- keg.link
- assert_equal 2, HOMEBREW_PREFIX.children.length
- assert (HOMEBREW_PREFIX+'bin').directory?
- assert_equal 3, (HOMEBREW_PREFIX+'bin').children.length
-
- keg.uninstall
- assert !keg.exist?
- assert !f.installed?
- end
-
- def test_script_install
- f=TestScriptFileFormula.new
-
- nostdout do
- f.brew do
- f.install
- end
- end
-
- assert_equal 1, f.bin.children.length
- end
-
- def test_md5
- valid_md5 = Class.new(TestBall) do
- @md5='71aa838a9e4050d1876a295a9e62cbe6'
- end
-
- assert_nothing_raised { nostdout { valid_md5.new.brew {} } }
- end
-
- def test_badmd5
- invalid_md5 = Class.new(TestBall) do
- @md5='61aa838a9e4050d1876a295a9e62cbe6'
- end
-
- assert_raises RuntimeError do
- nostdout { invalid_md5.new.brew {} }
- end
- end
-
- def test_sha1
- valid_sha1 = Class.new(TestBall) do
- @sha1='6ea8a98acb8f918df723c2ae73fe67d5664bfd7e'
- end
-
- assert_nothing_raised { nostdout { valid_sha1.new.brew {} } }
- end
-
- def test_badsha1
- invalid_sha1 = Class.new(TestBall) do
- @sha1='7ea8a98acb8f918df723c2ae73fe67d5664bfd7e'
- end
-
- assert_raises RuntimeError do
- nostdout { invalid_sha1.new.brew {} }
- end
- end
-
- def test_sha256
- valid_sha256 = Class.new(TestBall) do
- @sha256='ccbf5f44743b74add648c7e35e414076632fa3b24463d68d1f6afc5be77024f8'
- end
-
- assert_nothing_raised do
- nostdout { valid_sha256.new.brew {} }
- end
- end
-
- def test_badsha256
- invalid_sha256 = Class.new(TestBall) do
- @sha256='dcbf5f44743b74add648c7e35e414076632fa3b24463d68d1f6afc5be77024f8'
- end
-
- assert_raises RuntimeError do
- nostdout { invalid_sha256.new.brew {} }
- end
- end
-
- FOOBAR='foo-bar'
- def test_formula_funcs
- classname=Formula.class_s(FOOBAR)
- path=Formula.path(FOOBAR)
-
- assert_equal "FooBar", classname
- assert_match Regexp.new("^#{HOMEBREW_PREFIX}/Library/Formula"), path.to_s
-
- path=HOMEBREW_PREFIX+'Library'+'Formula'+"#{FOOBAR}.rb"
- path.dirname.mkpath
- File.open(path, 'w') do |f|
- f << %{
- require 'formula'
- class #{classname} < Formula
- @url=''
- def initialize(*args)
- @homepage = 'http://example.com/'
- super
- end
- end
- }
- end
-
- assert_not_nil Formula.factory(FOOBAR)
- end
-
- def test_cant_override_brew
- assert_raises(RuntimeError) { TestBallOverrideBrew.new }
- end
-
- def test_abstract_formula
- f=MostlyAbstractFormula.new
- assert_equal '__UNKNOWN__', f.name
- assert_raises(RuntimeError) { f.prefix }
- nostdout { assert_raises(RuntimeError) { f.brew } }
- end
-
- def test_zip
- nostdout { assert_nothing_raised { TestZip.new.brew {} } }
- end
-
- def test_no_ARGV_dupes
- # needs resurrecting
- ARGV.reset
- ARGV.unshift 'foo'
- ARGV.unshift 'foo'
-# n=0
-# ARGV.named.each{|f| n+=1 if f.name == 'foo'}
-# assert_equal 1, n
- end
-
- def test_ARGV
- assert_raises(FormulaUnspecifiedError) { ARGV.formulae }
- assert_raises(KegUnspecifiedError) { ARGV.kegs }
- assert ARGV.named.empty?
-
- (HOMEBREW_CELLAR+'mxcl'+'10.0').mkpath
-
- ARGV.reset
- ARGV.unshift 'mxcl'
- assert_equal 1, ARGV.named.length
- assert_equal 1, ARGV.kegs.length
- assert_raises(FormulaUnavailableError) { ARGV.formulae }
- end
-
- def test_version_dir
- d=HOMEBREW_CELLAR+'foo-0.1.9'
- d.mkpath
- assert_equal '0.1.9', d.version
- end
-
- def test_lame_version_style
- f=MockFormula.new 'http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz'
- assert_equal '398-2', f.version
- end
-
- def test_ruby_version_style
- f=MockFormula.new 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz'
- assert_equal '1.9.1-p243', f.version
- end
-
- # these will raise if we don't recognise your mac, but that prolly
- # indicates something went wrong rather than we don't know
- def test_hardware_cpu_type
- assert [:intel, :ppc].include?(Hardware.cpu_type)
- end
-
- def test_hardware_intel_family
- if Hardware.cpu_type == :intel
- assert [:core, :core2, :penryn, :nehalem].include?(Hardware.intel_family)
- end
- end
-
- def test_brew_h
- nostdout do
- assert_nothing_raised do
- f=TestBall.new
- make f.url
- info f.name
- clean f
- prune
- #TODO test diy function too
- end
- end
- end
-
- def test_brew_cleanup
- f1=TestBall.new
- f1.instance_eval { @version = "0.1" }
- f2=TestBall.new
- f2.instance_eval { @version = "0.2" }
- f3=TestBall.new
- f3.instance_eval { @version = "0.3" }
-
- nostdout do
- f1.brew { f1.install }
- f2.brew { f2.install }
- f3.brew { f3.install }
- end
-
- assert f1.installed?
- assert f2.installed?
- assert f3.installed?
-
- nostdout do
- cleanup f3
- end
-
- assert !f1.installed?
- assert !f2.installed?
- assert f3.installed?
- end
-
- def test_my_float_assumptions
- # this may look ridiculous but honestly there's code in brewit that depends on
- # this behaviour so I wanted to be certain Ruby floating points are behaving
- f='10.6'.to_f
- assert_equal 10.6, f
- assert f >= 10.6
- assert f <= 10.6
- assert_equal 10.5, f-0.1
- assert_equal 10.7, f+0.1
- end
-
- def test_arch_for_command
- arches=arch_for_command '/usr/bin/svn'
- if `sw_vers -productVersion` =~ /10\.(\d+)/ and $1.to_i >= 6
- assert_equal 3, arches.length
- assert arches.include?(:x86_64)
- else
- assert_equal 2, arches.length
- end
- assert arches.include?(:i386)
- assert arches.include?(:ppc7400)
- end
-
- def test_pathname_plus_yeast
- nostdout do
- assert_nothing_raised do
- assert !Pathname.getwd.rmdir_if_possible
- assert !Pathname.getwd.abv.empty?
-
- abcd=orig_abcd=HOMEBREW_CACHE+'abcd'
- FileUtils.cp ABS__FILE__, abcd
- abcd=HOMEBREW_PREFIX.install abcd
- assert (HOMEBREW_PREFIX+orig_abcd.basename).exist?
- assert abcd.exist?
- assert_equal HOMEBREW_PREFIX+'abcd', abcd
-
- assert_raises(RuntimeError) {abcd.write 'CONTENT'}
- abcd.unlink
- abcd.write 'HELLOWORLD'
- assert_equal 'HELLOWORLD', File.read(abcd)
-
- assert !orig_abcd.exist?
- rv=abcd.cp orig_abcd
- assert orig_abcd.exist?
- assert_equal rv, orig_abcd
-
- orig_abcd.unlink
- assert !orig_abcd.exist?
- abcd.cp HOMEBREW_CACHE
- assert orig_abcd.exist?
-
- foo1=HOMEBREW_CACHE+'foo-0.1.tar.gz'
- FileUtils.cp ABS__FILE__, foo1
- assert foo1.file?
-
- assert_equal '.tar.gz', foo1.extname
- assert_equal 'foo-0.1', foo1.stem
- assert_equal '0.1', foo1.version
-
- HOMEBREW_CACHE.chmod_R 0777
- end
- end
-
- assert_raises(RuntimeError) {Pathname.getwd.install 'non_existant_file'}
- end
-
- def test_omega_version_style
- f=MockFormula.new 'http://www.alcyone.com/binaries/omega/omega-0.80.2-src.tar.gz'
- assert_equal '0.80.2', f.version
- end
-
- def test_formula_class_func
- assert_equal Formula.class_s('s-lang'), 'SLang'
- assert_equal Formula.class_s('pkg-config'), 'PkgConfig'
- assert_equal Formula.class_s('foo_bar'), 'FooBar'
- end
-
- def test_version_style_rc
- f=MockFormula.new 'http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz'
- assert_equal '1.8.0-rc1', f.version
- end
-
- def test_updater_update_homebrew_without_any_changes
- outside_prefix do
- updater = RefreshBrewMock.new
- updater.in_prefix_expect("git checkout master")
- updater.in_prefix_expect("git pull origin master", "Already up-to-date.\n")
-
- 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_updater_update_homebrew_without_formulae_changes
- outside_prefix do
- updater = RefreshBrewMock.new
- updater.in_prefix_expect("git checkout master")
- output = fixture('update_git_pull_output_without_formulae_changes')
- updater.in_prefix_expect("git pull origin master", output)
-
- assert_equal true, updater.update_from_masterbrew!
- assert !updater.pending_formulae_changes?
- assert updater.updated_formulae.empty?
- assert updater.added_formulae.empty?
- end
- end
-
- def test_updater_update_homebrew_with_formulae_changes
- outside_prefix do
- updater = RefreshBrewMock.new
- updater.in_prefix_expect("git checkout master")
- output = fixture('update_git_pull_output_with_formulae_changes')
- updater.in_prefix_expect("git pull origin master", output)
-
- assert_equal true, updater.update_from_masterbrew!
- assert updater.pending_formulae_changes?
- assert_equal %w{ xar yajl }, updater.updated_formulae
- 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('git log -l -1 --pretty=format:%H', 'the-revision-hash')
- assert_equal 'the-revision-hash', updater.current_revision
- end
- end
-
- def test_class_names
- assert_equal 'ShellFm', Formula.class_s('shell.fm')
- assert_equal 'Fooxx', Formula.class_s('foo++')
- end
-
- def test_angband_version_style
- f = MockFormula.new 'http://rephial.org/downloads/3.0/angband-3.0.9b-src.tar.gz'
- assert_equal '3.0.9b', f.version
- end
-
- private
-
- OUTSIDE_PREFIX = '/tmp'
- def outside_prefix
- Dir.chdir(OUTSIDE_PREFIX) { yield }
- end
-
- def fixture(name)
- self.class.fixture_data[name]
- end
-
- def self.fixture_data
- unless @fixture_data
- require 'yaml'
- @fixture_data = YAML.load(DATA)
- end
- @fixture_data
- end
-
- def test_ENV_options
- ENV.gcc_4_0_1
- ENV.gcc_4_2
- ENV.O3
- ENV.minimal_optimization
- ENV.no_optimization
- ENV.libxml2
- ENV.x11
- ENV.enable_warnings
- assert !ENV.cc.empty?
- assert !ENV.cxx.empty?
- end
-end
-
-__END__
-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
- delete mode 100644 Library/Formula/antiword.rb
- delete mode 100644 Library/Formula/bash-completion.rb
- delete mode 100644 Library/Formula/xar.rb
- delete mode 100644 Library/Formula/yajl.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 \ No newline at end of file
+require 'test/test_versions'
+require 'test/test_checksums'
+require 'test/test_updater' unless ARGV.include? "--skip-update"
+require 'test/test_bucket'
+require 'test/test_inreplace'