require 'test/unit'
require 'test/gemutilities'
require 'rubygems/command_manager'
class TestGemSourcesCommand < RubyGemTestCase
def setup
super
Gem::CommandManager.instance # preload command objects
end
def test_execute
util_setup_source_info_cache
cmd = Gem::Commands::SourcesCommand.new
cmd.send :handle_options, []
ui = MockGemUi.new
use_ui ui do
cmd.execute
end
expected = <<-EOF
*** CURRENT SOURCES ***
http://gems.example.com
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/yaml'] = @si.to_yaml
cmd = Gem::Commands::SourcesCommand.new
cmd.send :handle_options, %w[--add http://beta-gems.example.com]
util_setup_source_info_cache
ui = MockGemUi.new
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 http://gems.example.com],
Gem::SourceInfoCache.cache_data.keys
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/yaml'] = proc do
raise Gem::RemoteFetcher::FetchError, 'it died'
end
Gem::RemoteFetcher.instance_variable_set :@fetcher, @fetcher
cmd = Gem::Commands::SourcesCommand.new
cmd.send :handle_options, %w[--add http://beta-gems.example.com]
util_setup_source_info_cache
ui = MockGemUi.new
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 = Gem::Commands::SourcesCommand.new
cmd.send :handle_options, %w[--add beta-gems.example.com]
util_setup_source_info_cache
ui = MockGemUi.new
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 = Gem::Commands::SourcesCommand.new
cmd.send :handle_options, %w[--remove http://gems.example.com]
util_setup_source_info_cache
ui = MockGemUi.new
use_ui ui do
cmd.execute
end
expected = <<-EOF
http://gems.example.com removed from sources
EOF
assert_equal expected, ui.output
assert_equal '', ui.error
Gem::SourceInfoCache.cache.flush
assert_equal [], Gem::SourceInfoCache.cache_data.keys
end
end
syntax highlighted by Code2HTML, v. 0.9.1