diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index 5cc70678a8..d42e0b090c 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -67,9 +67,8 @@ class VCSDownloadStrategy < AbstractDownloadStrategy end class CurlDownloadStrategy < AbstractDownloadStrategy - def initialize name, resource - super - @mirrors = resource.mirrors + def mirrors + @mirrors ||= resource.mirrors.dup end def tarball_path @@ -120,9 +119,9 @@ class CurlDownloadStrategy < AbstractDownloadStrategy puts "Already downloaded: #{tarball_path}" end rescue CurlDownloadStrategyError - raise if @mirrors.empty? + raise if mirrors.empty? puts "Trying a mirror..." - @url = @mirrors.shift + @url = mirrors.shift retry else tarball_path @@ -170,7 +169,7 @@ class CurlDownloadStrategy < AbstractDownloadStrategy private def curl(*args) - args << '--connect-timeout' << '5' unless @mirrors.empty? + args << '--connect-timeout' << '5' unless mirrors.empty? super end diff --git a/Library/Homebrew/test/test_resource.rb b/Library/Homebrew/test/test_resource.rb index 7916c3e0db..a649ad1426 100644 --- a/Library/Homebrew/test/test_resource.rb +++ b/Library/Homebrew/test/test_resource.rb @@ -75,8 +75,7 @@ class ResourceTests < Test::Unit::TestCase assert_empty @resource.mirrors @resource.mirror('foo') @resource.mirror('bar') - assert_equal 'foo', @resource.mirrors.shift - assert_equal 'bar', @resource.mirrors.shift + assert_equal %w{foo bar}, @resource.mirrors end def test_checksum_setters