aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2014-07-15 13:42:03 -0500
committerJack Nagel2014-07-15 13:42:03 -0500
commit7a03700f9c87bef17b13cc44e414806770d78ded (patch)
tree2ad1ca07d7d9d5a5dbb9cc22327ed8fa7d05310e
parenta198e06f531998f03a8d36c71be9058e5209f9d9 (diff)
downloadhomebrew-7a03700f9c87bef17b13cc44e414806770d78ded.tar.bz2
Eagerly set the download strategy
-rw-r--r--Library/Homebrew/resource.rb8
-rw-r--r--Library/Homebrew/test/test_dependency_collector.rb3
-rw-r--r--Library/Homebrew/test/test_resource.rb4
3 files changed, 9 insertions, 6 deletions
diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb
index 3409845a0..f8cb56e89 100644
--- a/Library/Homebrew/resource.rb
+++ b/Library/Homebrew/resource.rb
@@ -9,7 +9,8 @@ class Resource
include FileUtils
attr_reader :checksum, :mirrors, :specs, :using
- attr_writer :url, :checksum, :version, :download_strategy
+ attr_writer :url, :checksum, :version
+ attr_accessor :download_strategy
# Formula name must be set after the DSL, as we have no access to the
# formula name before initialization of the formula
@@ -34,10 +35,6 @@ class Resource
name.nil? ? owner.name : "#{owner.name}--#{name}"
end
- def download_strategy
- @download_strategy ||= DownloadStrategyDetector.detect(url, using)
- end
-
def cached_download
downloader.cached_location
end
@@ -104,6 +101,7 @@ class Resource
@url = val
@specs.merge!(specs)
@using = @specs.delete(:using)
+ @download_strategy = DownloadStrategyDetector.detect(url, using)
end
def version val=nil
diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb
index 760c3a06e..25ab71daa 100644
--- a/Library/Homebrew/test/test_dependency_collector.rb
+++ b/Library/Homebrew/test/test_dependency_collector.rb
@@ -128,7 +128,8 @@ class DependencyCollectorTests < Homebrew::TestCase
def test_resource_dep_raises_for_unknown_classes
resource = Resource.new
- resource.url "foo", :using => Class.new
+ resource.url "foo"
+ resource.download_strategy = Class.new
assert_raises(TypeError) { @d.add(resource) }
end
end
diff --git a/Library/Homebrew/test/test_resource.rb b/Library/Homebrew/test/test_resource.rb
index e17c194cc..e5cb288d2 100644
--- a/Library/Homebrew/test/test_resource.rb
+++ b/Library/Homebrew/test/test_resource.rb
@@ -38,6 +38,10 @@ class ResourceTests < Homebrew::TestCase
assert_equal GitDownloadStrategy, @resource.download_strategy
end
+ def test_raises_for_unknown_download_strategy_class
+ assert_raises(TypeError) { @resource.url("foo", :using => Class.new) }
+ end
+
def test_does_not_mutate_specs_hash
specs = { :using => :git, :branch => 'master' }
@resource.url('foo', specs)