aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-30 03:28:04 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-30 03:28:04 +0000
commitaee295fc747c7e117f4b550ab806057b4c4738a4 (patch)
tree414ad8357044c74fea87460060fff80d5a9922ae
parent8137152e01dbeaf8504f3d7e2117e22dfdf6801f (diff)
downloadruby-aee295fc747c7e117f4b550ab806057b4c4738a4.tar.gz
* lib/rubygems/spec_fetcher.rb: Allow prerelease spec fetching to fail
for bundler. * test/rubygems/test_gem_spec_fetcher.rb: Test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--lib/rubygems/spec_fetcher.rb16
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb14
3 files changed, 33 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 32b992e0a2..20cdcdf7b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Nov 30 12:27:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/spec_fetcher.rb: Allow prerelease spec fetching to fail
+ for bundler.
+ * test/rubygems/test_gem_spec_fetcher.rb: Test for above.
+
Fri Nov 30 12:20:53 2012 Eric Hodel <drbrain@segment7.net>
* lib/rake/backtrace.rb: Removed duplication in
diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb
index 531d023b2f..3345f6537e 100644
--- a/lib/rubygems/spec_fetcher.rb
+++ b/lib/rubygems/spec_fetcher.rb
@@ -195,7 +195,8 @@ class Gem::SpecFetcher
when :released
tuples_for source, :released
when :complete
- tuples_for(source, :prerelease) + tuples_for(source, :released)
+ tuples_for(source, :prerelease, true) +
+ tuples_for(source, :released)
when :prerelease
tuples_for(source, :prerelease)
else
@@ -211,9 +212,18 @@ class Gem::SpecFetcher
[list, errors]
end
- def tuples_for(source, type)
+ def tuples_for(source, type, gracefully_ignore=false)
cache = @caches[type]
- cache[source.uri] ||= source.load_specs(type)
+
+ if gracefully_ignore
+ begin
+ cache[source.uri] ||= source.load_specs(type)
+ rescue Gem::RemoteFetcher::FetchError
+ []
+ end
+ else
+ cache[source.uri] ||= source.load_specs(type)
+ end
end
end
diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb
index a64a2c60cd..b4aff095c0 100644
--- a/test/rubygems/test_gem_spec_fetcher.rb
+++ b/test/rubygems/test_gem_spec_fetcher.rb
@@ -187,6 +187,20 @@ class TestGemSpecFetcher < Gem::TestCase
assert_equal comp.sort, specs[@source].sort
end
+ def test_available_specs_complete_handles_no_prerelease
+ v = Gem.marshal_version
+ @fetcher.data.delete "#{@gem_repo}prerelease_specs.#{v}.gz"
+
+ specs, _ = @sf.available_specs(:complete)
+
+ assert_equal [@source], specs.keys
+
+ comp = @released
+
+ assert_equal comp.sort, specs[@source].sort
+ end
+
+
def test_available_specs_cache
specs, _ = @sf.available_specs(:latest)