aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)