ruby--ruby/test/rubygems/test_gem_commands_sources_c...

148 lines
3.1 KiB
Ruby

require 'test/unit'
require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
require 'rubygems/commands/sources_command'
class TestGemCommandsSourcesCommand < RubyGemTestCase
def setup
super
@cmd = Gem::Commands::SourcesCommand.new
end
def test_execute
util_setup_source_info_cache
@cmd.handle_options []
use_ui @ui do
@cmd.execute
end
expected = <<-EOF
*** CURRENT SOURCES ***
#{@gem_repo}
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
end
def test_execute_add
util_setup_fake_fetcher
@si = Gem::SourceIndex.new @gem1.full_name => @gem1.name
@fetcher.data["http://beta-gems.example.com/Marshal.#{@marshal_version}"] =
@si.dump
@cmd.handle_options %w[--add http://beta-gems.example.com]
util_setup_source_info_cache
use_ui @ui do
@cmd.execute
end
expected = <<-EOF
Bulk updating Gem source index for: http://beta-gems.example.com
http://beta-gems.example.com 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
@si = Gem::SourceIndex.new @gem1.full_name => @gem1.name
@fetcher.data["http://beta-gems.example.com/Marshal.#{@marshal_version}"] =
proc do
raise Gem::RemoteFetcher::FetchError, 'it died'
end
Gem::RemoteFetcher.instance_variable_set :@fetcher, @fetcher
@cmd.handle_options %w[--add http://beta-gems.example.com]
util_setup_source_info_cache
use_ui @ui do
@cmd.execute
end
expected = <<-EOF
Error fetching http://beta-gems.example.com:
\tit died
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
end
def test_execute_add_bad_uri
@cmd.handle_options %w[--add beta-gems.example.com]
util_setup_source_info_cache
use_ui @ui do
@cmd.execute
end
expected = <<-EOF
beta-gems.example.com is not a URI
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
end
def test_execute_remove
@cmd.handle_options %W[--remove #{@gem_repo}]
util_setup_source_info_cache
use_ui @ui do
@cmd.execute
end
expected = "#{@gem_repo} removed from sources\n"
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_source_info_cache
util_setup_fake_fetcher
@si = Gem::SourceIndex.new @gem1.full_name => @gem1.name
@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}
source cache successfully updated
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
end
end