2015-08-03 13:09:07 +01:00
|
|
|
require "testing_env"
|
|
|
|
require "download_strategy"
|
2013-04-07 00:49:56 -05:00
|
|
|
|
2013-09-30 21:36:38 -05:00
|
|
|
class ResourceDouble
|
2014-12-10 00:53:57 -05:00
|
|
|
attr_reader :url, :specs, :version
|
2013-04-07 00:49:56 -05:00
|
|
|
|
2015-08-03 13:09:07 +01:00
|
|
|
def initialize(url = "http://example.com/foo.tar.gz", specs = {})
|
2013-04-07 00:49:56 -05:00
|
|
|
@url = url
|
|
|
|
@specs = specs
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-06-18 20:32:51 -05:00
|
|
|
class AbstractDownloadStrategyTests < Homebrew::TestCase
|
2013-04-07 00:49:56 -05:00
|
|
|
def setup
|
|
|
|
@name = "foo"
|
2013-09-30 21:36:38 -05:00
|
|
|
@resource = ResourceDouble.new
|
|
|
|
@strategy = AbstractDownloadStrategy.new(@name, @resource)
|
2015-08-03 13:09:07 +01:00
|
|
|
@args = %w[foo bar baz]
|
2013-04-07 00:49:56 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_expand_safe_system_args_with_explicit_quiet_flag
|
2015-08-03 13:09:07 +01:00
|
|
|
@args << { :quiet_flag => "--flag" }
|
2013-04-07 00:49:56 -05:00
|
|
|
expanded_args = @strategy.expand_safe_system_args(@args)
|
2015-08-03 13:09:07 +01:00
|
|
|
assert_equal %w[foo bar baz --flag], expanded_args
|
2013-04-07 00:49:56 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_expand_safe_system_args_with_implicit_quiet_flag
|
|
|
|
expanded_args = @strategy.expand_safe_system_args(@args)
|
2015-08-03 13:09:07 +01:00
|
|
|
assert_equal %w[foo bar -q baz], expanded_args
|
2013-04-07 00:49:56 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_expand_safe_system_args_does_not_mutate_argument
|
|
|
|
result = @strategy.expand_safe_system_args(@args)
|
2015-08-03 13:09:07 +01:00
|
|
|
assert_equal %w[foo bar baz], @args
|
2014-06-10 22:43:47 -05:00
|
|
|
refute_same @args, result
|
2013-04-07 00:49:56 -05:00
|
|
|
end
|
|
|
|
end
|
2012-10-15 01:19:31 -05:00
|
|
|
|
2014-06-18 20:32:51 -05:00
|
|
|
class VCSDownloadStrategyTests < Homebrew::TestCase
|
2014-07-16 23:19:58 -05:00
|
|
|
def test_cache_filename
|
|
|
|
resource = ResourceDouble.new("http://example.com/bar")
|
2015-08-03 13:09:07 +01:00
|
|
|
strategy = Class.new(VCSDownloadStrategy) do
|
|
|
|
def cache_tag
|
|
|
|
"foo"
|
2015-08-03 21:18:00 +08:00
|
|
|
end
|
2015-08-03 13:09:07 +01:00
|
|
|
end
|
2014-07-16 23:19:58 -05:00
|
|
|
downloader = strategy.new("baz", resource)
|
2014-12-06 12:29:15 -05:00
|
|
|
assert_equal HOMEBREW_CACHE.join("baz--foo"), downloader.cached_location
|
2013-09-30 21:36:38 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-06-18 20:32:51 -05:00
|
|
|
class DownloadStrategyDetectorTests < Homebrew::TestCase
|
2012-10-15 01:19:31 -05:00
|
|
|
def setup
|
|
|
|
@d = DownloadStrategyDetector.new
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_detect_git_download_startegy
|
2014-06-12 17:58:12 -05:00
|
|
|
@d = DownloadStrategyDetector.detect("git://example.com/foo.git")
|
2012-10-15 01:19:31 -05:00
|
|
|
assert_equal GitDownloadStrategy, @d
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_default_to_curl_strategy
|
|
|
|
@d = DownloadStrategyDetector.detect(Object.new)
|
|
|
|
assert_equal CurlDownloadStrategy, @d
|
|
|
|
end
|
2013-09-26 16:59:45 -05:00
|
|
|
|
|
|
|
def test_raises_when_passed_unrecognized_strategy
|
|
|
|
assert_raises(TypeError) do
|
|
|
|
DownloadStrategyDetector.detect("foo", Class.new)
|
|
|
|
end
|
|
|
|
end
|
2012-10-15 01:19:31 -05:00
|
|
|
end
|