summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_commands_sources_command.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-17 22:04:18 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-17 22:04:18 +0000
commit9d4f37f51fb2ffdef5e318afb3cb81516dcba4f7 (patch)
tree2eb3c16c59259a25f5d9315edacc61dfc8c59d62 /test/rubygems/test_gem_commands_sources_command.rb
parentf98e6b91dec68ddd010ccb3bad651a18e7dca338 (diff)
Update RubyGems to 1.1.1 r1778 (almost 1.2)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_commands_sources_command.rb')
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb132
1 files changed, 101 insertions, 31 deletions
diff --git a/test/rubygems/test_gem_commands_sources_command.rb b/test/rubygems/test_gem_commands_sources_command.rb
index f15d44dfe8..623c732e50 100644
--- a/test/rubygems/test_gem_commands_sources_command.rb
+++ b/test/rubygems/test_gem_commands_sources_command.rb
@@ -8,10 +8,12 @@ class TestGemCommandsSourcesCommand < RubyGemTestCase
super
@cmd = Gem::Commands::SourcesCommand.new
+
+ @new_repo = "http://beta-gems.example.com"
end
def test_execute
- util_setup_source_info_cache
+ util_setup_spec_fetcher
@cmd.handle_options []
use_ui @ui do
@@ -34,43 +36,49 @@ class TestGemCommandsSourcesCommand < RubyGemTestCase
si = Gem::SourceIndex.new
si.add_spec @a1
- @fetcher.data["http://beta-gems.example.com/Marshal.#{@marshal_version}"] =
- si.dump
+ specs = si.map do |_, spec|
+ [spec.name, spec.version, spec.original_platform]
+ end
- @cmd.handle_options %w[--add http://beta-gems.example.com]
+ specs_dump_gz = StringIO.new
+ Zlib::GzipWriter.wrap specs_dump_gz do |io|
+ Marshal.dump specs, io
+ end
- util_setup_source_info_cache
+ @fetcher.data["#{@new_repo}/specs.#{@marshal_version}.gz"] =
+ specs_dump_gz.string
+
+ @cmd.handle_options %W[--add #{@new_repo}]
+
+ util_setup_spec_fetcher
use_ui @ui do
@cmd.execute
end
+ assert_equal [@gem_repo, @new_repo], Gem.sources
+
expected = <<-EOF
-Bulk updating Gem source index for: http://beta-gems.example.com/
-http://beta-gems.example.com added to sources
+#{@new_repo} added to sources
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
-
- Gem::SourceInfoCache.cache.flush
- assert_equal %W[http://beta-gems.example.com #{@gem_repo}],
- Gem::SourceInfoCache.cache_data.keys.sort
end
def test_execute_add_nonexistent_source
util_setup_fake_fetcher
- @fetcher.data["http://beta-gems.example.com/Marshal.#{@marshal_version}"] =
- proc do
- raise Gem::RemoteFetcher::FetchError, 'it died'
- end
+ uri = "http://beta-gems.example.com/specs.#{@marshal_version}.gz"
+ @fetcher.data[uri] = proc do
+ raise Gem::RemoteFetcher::FetchError.new('it died', uri)
+ end
- Gem::RemoteFetcher.instance_variable_set :@fetcher, @fetcher
+ Gem::RemoteFetcher.fetcher = @fetcher
@cmd.handle_options %w[--add http://beta-gems.example.com]
- util_setup_source_info_cache
+ util_setup_spec_fetcher
use_ui @ui do
@cmd.execute
@@ -78,7 +86,7 @@ http://beta-gems.example.com added to sources
expected = <<-EOF
Error fetching http://beta-gems.example.com:
-\tit died
+\tit died (#{uri})
EOF
assert_equal expected, @ui.output
@@ -88,12 +96,14 @@ Error fetching http://beta-gems.example.com:
def test_execute_add_bad_uri
@cmd.handle_options %w[--add beta-gems.example.com]
- util_setup_source_info_cache
+ util_setup_spec_fetcher
use_ui @ui do
@cmd.execute
end
+ assert_equal [@gem_repo], Gem.sources
+
expected = <<-EOF
beta-gems.example.com is not a URI
EOF
@@ -102,6 +112,34 @@ beta-gems.example.com is not a URI
assert_equal '', @ui.error
end
+ def test_execute_add_legacy
+ util_setup_fake_fetcher
+ util_setup_source_info_cache
+
+ si = Gem::SourceIndex.new
+ si.add_spec @a1
+
+ @fetcher.data["#{@new_repo}/yaml"] = ''
+
+ @cmd.handle_options %W[--add #{@new_repo}]
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ assert_equal [@gem_repo], Gem.sources
+
+ expected = <<-EOF
+WARNING: RubyGems 1.2+ index not found for:
+\t#{@new_repo}
+
+Will cause RubyGems to revert to legacy indexes, degrading performance.
+ EOF
+
+ assert_equal "#{@new_repo} added to sources\n", @ui.output
+ assert_equal expected, @ui.error
+ end
+
def test_execute_clear_all
@cmd.handle_options %w[--clear-all]
@@ -116,11 +154,19 @@ beta-gems.example.com is not a URI
assert File.exist?(cache.latest_system_cache_file),
'latest system cache file'
+ util_setup_spec_fetcher
+
+ fetcher = Gem::SpecFetcher.fetcher
+
+ # HACK figure out how to force directory creation via fetcher
+ #assert File.directory?(fetcher.dir), 'cache dir exists'
+
use_ui @ui do
@cmd.execute
end
expected = <<-EOF
+*** Removed specs cache ***
*** Removed user source cache ***
*** Removed latest user source cache ***
*** Removed system source cache ***
@@ -135,12 +181,13 @@ beta-gems.example.com is not a URI
assert !File.exist?(cache.latest_system_cache_file),
'latest system cache file'
+ assert !File.exist?(fetcher.dir), 'cache dir removed'
end
def test_execute_remove
@cmd.handle_options %W[--remove #{@gem_repo}]
- util_setup_source_info_cache
+ util_setup_spec_fetcher
use_ui @ui do
@cmd.execute
@@ -150,9 +197,6 @@ beta-gems.example.com is not a URI
assert_equal expected, @ui.output
assert_equal '', @ui.error
-
- Gem::SourceInfoCache.cache.flush
- assert_equal [], Gem::SourceInfoCache.cache_data.keys
end
def test_execute_remove_no_network
@@ -160,7 +204,7 @@ beta-gems.example.com is not a URI
util_setup_fake_fetcher
- @fetcher.data["#{@gem_repo}/Marshal.#{Gem.marshal_version}"] = proc do
+ @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = proc do
raise Gem::RemoteFetcher::FetchError
end
@@ -172,34 +216,60 @@ beta-gems.example.com is not a URI
assert_equal expected, @ui.output
assert_equal '', @ui.error
-
- Gem::SourceInfoCache.cache.flush
- assert_equal [], Gem::SourceInfoCache.cache_data.keys
end
def test_execute_update
@cmd.handle_options %w[--update]
+ util_setup_fake_fetcher
+ source_index = util_setup_spec_fetcher @a1
+
+ specs = source_index.map do |name, spec|
+ [spec.name, spec.version, spec.original_platform]
+ end
+
+ @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] =
+ util_gzip Marshal.dump(specs)
+
+ latest_specs = source_index.latest_specs.map do |spec|
+ [spec.name, spec.version, spec.original_platform]
+ end
+
+ @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] =
+ util_gzip Marshal.dump(latest_specs)
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ assert_equal "source cache successfully updated\n", @ui.output
+ assert_equal '', @ui.error
+ end
+
+ def test_execute_update_legacy
+ @cmd.handle_options %w[--update]
+
+ util_setup_fake_fetcher
util_setup_source_info_cache
Gem::SourceInfoCache.reset
- util_setup_fake_fetcher
si = Gem::SourceIndex.new
si.add_spec @a1
- @fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = si.dump
+ @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
+ @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
use_ui @ui do
@cmd.execute
end
expected = <<-EOF
-Bulk updating Gem source index for: #{@gem_repo}/
+Bulk updating Gem source index for: #{@gem_repo}
source cache successfully updated
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
end
-
+
end