/Library/Homebrew/test/test_software_spec.rb
Ruby | 159 lines | 131 code | 28 blank | 0 comment | 0 complexity | 024836823b4589d907b838a527321a1d MD5 | raw file
- require 'testing_env'
- require 'formula_support'
- require 'bottles'
- class SoftwareSpecTests < Test::Unit::TestCase
- include VersionAssertions
- def setup
- @spec = SoftwareSpec.new
- end
- def test_url
- @spec.url('foo')
- assert_equal 'foo', @spec.url
- end
- def test_url_with_specs
- @spec.url('foo', :branch => 'master')
- assert_equal 'foo', @spec.url
- assert_equal({ :branch => 'master' }, @spec.specs)
- end
- def test_url_with_custom_download_strategy_class
- strategy = Class.new(AbstractDownloadStrategy)
- @spec.url('foo', :using => strategy)
- assert_equal 'foo', @spec.url
- assert_equal strategy, @spec.download_strategy
- end
- def test_url_with_specs_and_download_strategy
- strategy = Class.new(AbstractDownloadStrategy)
- @spec.url('foo', :using => strategy, :branch => 'master')
- assert_equal 'foo', @spec.url
- assert_equal({ :branch => 'master' }, @spec.specs)
- assert_equal strategy, @spec.download_strategy
- end
- def test_url_with_custom_download_strategy_symbol
- @spec.url('foo', :using => :git)
- assert_equal 'foo', @spec.url
- assert_equal GitDownloadStrategy, @spec.download_strategy
- end
- def test_version
- @spec.version('1.0')
- assert_version_equal '1.0', @spec.version
- assert !@spec.version.detected_from_url?
- end
- def test_version_from_url
- @spec.url('http://foo.com/bar-1.0.tar.gz')
- assert_version_equal '1.0', @spec.version
- assert @spec.version.detected_from_url?
- end
- def test_version_with_scheme
- scheme = Class.new(Version)
- @spec.version('1.0' => scheme)
- assert_version_equal '1.0', @spec.version
- assert_instance_of scheme, @spec.version
- end
- def test_mirrors
- assert_empty @spec.mirrors
- @spec.mirror('foo')
- @spec.mirror('bar')
- assert_equal 'foo', @spec.mirrors.shift
- assert_equal 'bar', @spec.mirrors.shift
- end
- def test_checksum_setters
- assert_nil @spec.checksum
- @spec.sha1('baadidea'*5)
- assert_equal Checksum.new(:sha1, 'baadidea'*5), @spec.checksum
- @spec.sha256('baadidea'*8)
- assert_equal Checksum.new(:sha256, 'baadidea'*8), @spec.checksum
- end
- def test_download_strategy
- strategy = Object.new
- DownloadStrategyDetector.
- expects(:detect).with("foo", nil).returns(strategy)
- @spec.url("foo")
- assert_equal strategy, @spec.download_strategy
- end
- def test_verify_download_integrity_missing
- fn = Object.new
- checksum = @spec.sha1('baadidea'*5)
- fn.expects(:verify_checksum).
- with(checksum).raises(ChecksumMissingError)
- fn.expects(:sha1)
- shutup { @spec.verify_download_integrity(fn) }
- end
- def test_verify_download_integrity_mismatch
- fn = Object.new
- checksum = @spec.sha1('baadidea'*5)
- fn.expects(:verify_checksum).with(checksum).
- raises(ChecksumMismatchError.new(checksum, Object.new))
- shutup do
- assert_raises(ChecksumMismatchError) do
- @spec.verify_download_integrity(fn)
- end
- end
- end
- end
- class HeadSoftwareSpecTests < Test::Unit::TestCase
- include VersionAssertions
- def setup
- @spec = HeadSoftwareSpec.new
- end
- def test_version
- assert_version_equal 'HEAD', @spec.version
- end
- def test_verify_download_integrity
- assert_nil @spec.verify_download_integrity(Object.new)
- end
- end
- class BottleTests < Test::Unit::TestCase
- def setup
- @spec = Bottle.new
- end
- def test_checksum_setters
- checksums = {
- :snow_leopard_32 => 'deadbeef'*5,
- :snow_leopard => 'faceb00c'*5,
- :lion => 'baadf00d'*5,
- :mountain_lion => '8badf00d'*5,
- }
- checksums.each_pair do |cat, sha1|
- @spec.sha1(sha1 => cat)
- end
- checksums.each_pair do |cat, sha1|
- assert_equal Checksum.new(:sha1, sha1),
- @spec.instance_variable_get(:@sha1)[cat]
- end
- end
- def test_other_setters
- double = Object.new
- %w{root_url prefix cellar revision}.each do |method|
- @spec.send(method, double)
- assert_equal double, @spec.send(method)
- end
- end
- end