diff options
| author | Jack Nagel | 2013-09-17 21:25:38 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2013-09-17 21:29:50 -0500 | 
| commit | 73ddbb6df53a5657e61e7074c62b5bae77c5de78 (patch) | |
| tree | bccb5eb5226f0feeebbb3c8ca834678fd19c5a51 /Library/Homebrew/test/test_resource.rb | |
| parent | 274c0df3cfaae3dcf012d6b4eee111e0f33755f1 (diff) | |
| download | homebrew-73ddbb6df53a5657e61e7074c62b5bae77c5de78.tar.bz2 | |
SoftwareSpec tests are now Resource tests
Diffstat (limited to 'Library/Homebrew/test/test_resource.rb')
| -rw-r--r-- | Library/Homebrew/test/test_resource.rb | 122 | 
1 files changed, 122 insertions, 0 deletions
| diff --git a/Library/Homebrew/test/test_resource.rb b/Library/Homebrew/test/test_resource.rb new file mode 100644 index 000000000..7916c3e0d --- /dev/null +++ b/Library/Homebrew/test/test_resource.rb @@ -0,0 +1,122 @@ +require 'testing_env' +require 'resource' + +class ResourceTests < Test::Unit::TestCase +  include VersionAssertions + +  def setup +    @resource = Resource.new('test') +  end + +  def test_url +    @resource.url('foo') +    assert_equal 'foo', @resource.url +  end + +  def test_url_with_specs +    @resource.url('foo', :branch => 'master') +    assert_equal 'foo', @resource.url +    assert_equal({ :branch => 'master' }, @resource.specs) +  end + +  def test_url_with_custom_download_strategy_class +    strategy = Class.new(AbstractDownloadStrategy) +    @resource.url('foo', :using => strategy) +    assert_equal 'foo', @resource.url +    assert_equal strategy, @resource.download_strategy +  end + +  def test_url_with_specs_and_download_strategy +    strategy = Class.new(AbstractDownloadStrategy) +    @resource.url('foo', :using => strategy, :branch => 'master') +    assert_equal 'foo', @resource.url +    assert_equal({ :branch => 'master' }, @resource.specs) +    assert_equal strategy, @resource.download_strategy +  end + +  def test_url_with_custom_download_strategy_symbol +    @resource.url('foo', :using => :git) +    assert_equal 'foo', @resource.url +    assert_equal GitDownloadStrategy, @resource.download_strategy +  end + +  def test_version +    @resource.version('1.0') +    assert_version_equal '1.0', @resource.version +    assert !@resource.version.detected_from_url? +  end + +  def test_version_from_url +    @resource.url('http://foo.com/bar-1.0.tar.gz') +    assert_version_equal '1.0', @resource.version +    assert @resource.version.detected_from_url? +  end + +  def test_version_with_scheme +    scheme = Class.new(Version) +    @resource.version('1.0' => scheme) +    assert_version_equal '1.0', @resource.version +    assert_instance_of scheme, @resource.version +  end + +  def test_version_from_tag +    @resource.url('http://foo.com/bar-1.0.tar.gz', :tag => 'v1.0.2') +    assert_version_equal '1.0.2', @resource.version +    assert @resource.version.detected_from_url? +  end + +  def test_rejects_non_string_versions +    assert_raises(TypeError) { @resource.version(1) } +    assert_raises(TypeError) { @resource.version(2.0) } +    assert_raises(TypeError) { @resource.version(Object.new) } +  end + +  def test_mirrors +    assert_empty @resource.mirrors +    @resource.mirror('foo') +    @resource.mirror('bar') +    assert_equal 'foo', @resource.mirrors.shift +    assert_equal 'bar', @resource.mirrors.shift +  end + +  def test_checksum_setters +    assert_nil @resource.checksum +    @resource.sha1('baadidea'*5) +    assert_equal Checksum.new(:sha1, 'baadidea'*5), @resource.checksum +    @resource.sha256('baadidea'*8) +    assert_equal Checksum.new(:sha256, 'baadidea'*8), @resource.checksum +  end + +  def test_download_strategy +    strategy = Object.new +    DownloadStrategyDetector. +      expects(:detect).with("foo", nil).returns(strategy) +    @resource.url("foo") +    assert_equal strategy, @resource.download_strategy +  end + +  def test_verify_download_integrity_missing +    fn = Pathname.new('test') +    checksum = @resource.sha1('baadidea'*5) + +    fn.expects(:verify_checksum). +      with(checksum).raises(ChecksumMissingError) +    fn.expects(:sha1) + +    shutup { @resource.verify_download_integrity(fn) } +  end + +  def test_verify_download_integrity_mismatch +    fn = Object.new +    checksum = @resource.sha1('baadidea'*5) + +    fn.expects(:verify_checksum).with(checksum). +      raises(ChecksumMismatchError.new(checksum, Object.new)) + +    shutup do +      assert_raises(ChecksumMismatchError) do +        @resource.verify_download_integrity(fn) +      end +    end +  end +end | 
