From 31c94ffeb5f09d09ac2c86fc9e6614e38251a43d Mon Sep 17 00:00:00 2001 From: drbrain Date: Tue, 9 Jun 2009 21:38:59 +0000 Subject: Update to RubyGems 1.3.4 r2223 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rubygems/test_gem_spec_fetcher.rb | 82 +++++++++++++++++++++++++++++++--- 1 file changed, 77 insertions(+), 5 deletions(-) (limited to 'test/rubygems/test_gem_spec_fetcher.rb') diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb index 774785be08..972289f233 100644 --- a/test/rubygems/test_gem_spec_fetcher.rb +++ b/test/rubygems/test_gem_spec_fetcher.rb @@ -10,22 +10,31 @@ class TestGemSpecFetcher < RubyGemTestCase util_setup_fake_fetcher + @a_pre = quick_gem 'a', '1.a' @source_index.add_spec @pl1 + @source_index.add_spec @a_pre @specs = @source_index.gems.sort.map do |name, spec| [spec.name, spec.version, spec.original_platform] end.sort - @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] = - util_gzip(Marshal.dump(@specs)) - @latest_specs = @source_index.latest_specs.sort.map do |spec| [spec.name, spec.version, spec.original_platform] end + @prerelease_specs = @source_index.prerelease_gems.sort.map do |name, spec| + [spec.name, spec.version, spec.original_platform] + end.sort + + @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] = + util_gzip(Marshal.dump(@specs)) + @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump(@latest_specs)) + @fetcher.data["#{@gem_repo}prerelease_specs.#{Gem.marshal_version}.gz"] = + util_gzip(Marshal.dump(@prerelease_specs)) + @sf = Gem::SpecFetcher.new end @@ -34,6 +43,8 @@ class TestGemSpecFetcher < RubyGemTestCase util_zip(Marshal.dump(@a1)) @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] = util_zip(Marshal.dump(@a2)) + @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] = + util_zip(Marshal.dump(@a_pre)) dep = Gem::Dependency.new 'a', 1 specs_and_sources = @sf.fetch dep, true @@ -54,6 +65,8 @@ class TestGemSpecFetcher < RubyGemTestCase util_zip(Marshal.dump(@a1)) @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] = util_zip(Marshal.dump(@a2)) + @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] = + util_zip(Marshal.dump(@a_pre)) dep = Gem::Dependency.new 'a', 1 specs_and_sources = @sf.fetch dep @@ -65,6 +78,24 @@ class TestGemSpecFetcher < RubyGemTestCase assert_equal [[@a2.full_name, @gem_repo]], spec_names end + def test_fetch_prerelease + @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] = + util_zip(Marshal.dump(@a1)) + @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] = + util_zip(Marshal.dump(@a2)) + @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] = + util_zip(Marshal.dump(@a_pre)) + + dep = Gem::Dependency.new 'a', '1.a' + specs_and_sources = @sf.fetch dep, false, true, true + + spec_names = specs_and_sources.map do |spec, source_uri| + [spec.full_name, source_uri] + end + + assert_equal [[@a_pre.full_name, @gem_repo]], spec_names + end + def test_fetch_legacy_repo @fetcher.data.delete "#{@gem_repo}specs.#{Gem.marshal_version}.gz" @fetcher.data["#{@gem_repo}yaml"] = '' @@ -186,6 +217,17 @@ RubyGems will revert to legacy indexes degrading performance. assert_equal expected, specs end + def test_find_matching_prerelease + dep = Gem::Dependency.new 'a', '1.a' + specs = @sf.find_matching dep, false, true, true + + expected = [ + [['a', Gem::Version.new('1.a'), Gem::Platform::RUBY], @gem_repo], + ] + + assert_equal expected, specs + end + def test_find_matching_platform util_set_arch 'i386-linux' @@ -237,7 +279,7 @@ RubyGems will revert to legacy indexes degrading performance. def test_list_cache specs = @sf.list - assert !specs[@uri].empty? + refute specs[@uri].empty? @fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = nil @@ -249,7 +291,7 @@ RubyGems will revert to legacy indexes degrading performance. def test_list_cache_all specs = @sf.list true - assert !specs[@uri].empty? + refute specs[@uri].empty? @fetcher.data["#{@gem_repo}/specs.#{Gem.marshal_version}.gz"] = nil @@ -268,6 +310,12 @@ RubyGems will revert to legacy indexes degrading performance. assert_equal [@specs], specs.values, 'specs file not loaded' end + def test_list_prerelease + specs = @sf.list false, true + + assert_equal @prerelease_specs, specs[@uri].sort + end + def test_load_specs specs = @sf.load_specs @uri, 'specs' @@ -308,5 +356,29 @@ RubyGems will revert to legacy indexes degrading performance. assert_equal @latest_specs, latest_specs end + def test_load_specs_cached_empty + @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = + proc do + @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = + util_gzip(Marshal.dump(@latest_specs)) + + nil + end + + cache_dir = File.join Gem.user_home, '.gem', 'specs', 'gems.example.com%80' + + FileUtils.mkdir_p cache_dir + + cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}" + + open cache_file, 'wb' do |io| + io.write Marshal.dump(@latest_specs)[0, 10] + end + + latest_specs = @sf.load_specs @uri, 'latest_specs' + + assert_equal @latest_specs, latest_specs + end + end -- cgit v1.2.3