SoftwareSpec tests are now Resource tests
This commit is contained in:
		
							parent
							
								
									eb3071332c
								
							
						
					
					
						commit
						3793c05845
					
				
							
								
								
									
										122
									
								
								Library/Homebrew/test/test_resource.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								Library/Homebrew/test/test_resource.rb
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
@ -2,126 +2,6 @@ require 'testing_env'
 | 
			
		||||
require 'software_spec'
 | 
			
		||||
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_version_from_tag
 | 
			
		||||
    @spec.url('http://foo.com/bar-1.0.tar.gz', :tag => 'v1.0.2')
 | 
			
		||||
    assert_version_equal '1.0.2', @spec.version
 | 
			
		||||
    assert @spec.version.detected_from_url?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_rejects_non_string_versions
 | 
			
		||||
    assert_raises(TypeError) { @spec.version(1) }
 | 
			
		||||
    assert_raises(TypeError) { @spec.version(2.0) }
 | 
			
		||||
    assert_raises(TypeError) { @spec.version(Object.new) }
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user