require 'testing_env' require 'download_strategy' require 'bottles' # XXX: hoist these regexps into constants in Pathname? class SoftwareSpecDouble attr_reader :url, :specs def initialize(url="http://foo.com/bar.tar.gz", specs={}) @url = url @specs = specs end end class AbstractDownloadStrategyTests < Test::Unit::TestCase def setup @name = "foo" @package = SoftwareSpecDouble.new @strategy = AbstractDownloadStrategy.new(@name, @package) @args = %w{foo bar baz} end def test_expand_safe_system_args_with_explicit_quiet_flag @args << { :quiet_flag => '--flag' } expanded_args = @strategy.expand_safe_system_args(@args) assert_equal %w{foo bar baz --flag}, expanded_args end def test_expand_safe_system_args_with_implicit_quiet_flag expanded_args = @strategy.expand_safe_system_args(@args) assert_equal %w{foo bar -q baz}, expanded_args end def test_expand_safe_system_args_does_not_mutate_argument result = @strategy.expand_safe_system_args(@args) assert_equal %w{foo bar baz}, @args assert_not_same @args, result end end class DownloadStrategyDetectorTests < Test::Unit::TestCase def setup @d = DownloadStrategyDetector.new end def test_detect_git_download_startegy @d = DownloadStrategyDetector.detect("git://foo.com/bar.git") assert_equal GitDownloadStrategy, @d end def test_default_to_curl_strategy @d = DownloadStrategyDetector.detect(Object.new) assert_equal CurlDownloadStrategy, @d end end