2011-01-28 18:46:47 -05:00
|
|
|
require 'rubygems/test_case'
|
2007-11-10 02:48:56 -05:00
|
|
|
require 'rubygems/commands/sources_command'
|
|
|
|
|
2011-01-28 18:46:47 -05:00
|
|
|
class TestGemCommandsSourcesCommand < Gem::TestCase
|
2007-11-10 02:48:56 -05:00
|
|
|
|
|
|
|
def setup
|
|
|
|
super
|
|
|
|
|
2011-08-04 21:00:01 -04:00
|
|
|
util_setup_fake_fetcher
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
@cmd = Gem::Commands::SourcesCommand.new
|
2008-06-17 18:04:18 -04:00
|
|
|
|
|
|
|
@new_repo = "http://beta-gems.example.com"
|
2007-11-10 02:48:56 -05:00
|
|
|
end
|
|
|
|
|
2009-06-09 17:38:59 -04:00
|
|
|
def test_initialize_proxy
|
|
|
|
assert @cmd.handles?(['--http-proxy', 'http://proxy.example.com'])
|
|
|
|
end
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
def test_execute
|
2008-06-17 18:04:18 -04:00
|
|
|
util_setup_spec_fetcher
|
2007-11-10 02:48:56 -05:00
|
|
|
@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
|
|
|
|
|
2011-05-31 23:45:05 -04:00
|
|
|
install_specs @a1
|
2007-11-10 02:48:56 -05:00
|
|
|
|
2011-05-31 23:45:05 -04:00
|
|
|
specs = Gem::Specification.map { |spec|
|
2008-06-17 18:04:18 -04:00
|
|
|
[spec.name, spec.version, spec.original_platform]
|
2011-05-31 23:45:05 -04:00
|
|
|
}
|
2007-11-10 02:48:56 -05:00
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
specs_dump_gz = StringIO.new
|
|
|
|
Zlib::GzipWriter.wrap specs_dump_gz do |io|
|
|
|
|
Marshal.dump specs, io
|
|
|
|
end
|
2007-11-10 02:48:56 -05:00
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
@fetcher.data["#{@new_repo}/specs.#{@marshal_version}.gz"] =
|
|
|
|
specs_dump_gz.string
|
|
|
|
|
|
|
|
@cmd.handle_options %W[--add #{@new_repo}]
|
|
|
|
|
|
|
|
util_setup_spec_fetcher
|
2007-11-10 02:48:56 -05:00
|
|
|
|
|
|
|
use_ui @ui do
|
|
|
|
@cmd.execute
|
|
|
|
end
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
assert_equal [@gem_repo, @new_repo], Gem.sources
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
expected = <<-EOF
|
2008-06-17 18:04:18 -04:00
|
|
|
#{@new_repo} added to sources
|
2007-11-10 02:48:56 -05:00
|
|
|
EOF
|
|
|
|
|
|
|
|
assert_equal expected, @ui.output
|
|
|
|
assert_equal '', @ui.error
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_execute_add_nonexistent_source
|
|
|
|
util_setup_fake_fetcher
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
uri = "http://beta-gems.example.com/specs.#{@marshal_version}.gz"
|
|
|
|
@fetcher.data[uri] = proc do
|
|
|
|
raise Gem::RemoteFetcher::FetchError.new('it died', uri)
|
|
|
|
end
|
2007-11-10 02:48:56 -05:00
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
Gem::RemoteFetcher.fetcher = @fetcher
|
2007-11-10 02:48:56 -05:00
|
|
|
|
|
|
|
@cmd.handle_options %w[--add http://beta-gems.example.com]
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
util_setup_spec_fetcher
|
2007-11-10 02:48:56 -05:00
|
|
|
|
|
|
|
use_ui @ui do
|
2011-01-28 18:46:47 -05:00
|
|
|
assert_raises Gem::MockGemUi::TermError do
|
2011-01-19 16:23:04 -05:00
|
|
|
@cmd.execute
|
|
|
|
end
|
2007-11-10 02:48:56 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
expected = <<-EOF
|
|
|
|
Error fetching http://beta-gems.example.com:
|
2008-06-17 18:04:18 -04:00
|
|
|
\tit died (#{uri})
|
2007-11-10 02:48:56 -05:00
|
|
|
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]
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
util_setup_spec_fetcher
|
2007-11-10 02:48:56 -05:00
|
|
|
|
|
|
|
use_ui @ui do
|
2011-01-28 18:46:47 -05:00
|
|
|
assert_raises Gem::MockGemUi::TermError do
|
2011-01-19 16:23:04 -05:00
|
|
|
@cmd.execute
|
|
|
|
end
|
2007-11-10 02:48:56 -05:00
|
|
|
end
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
assert_equal [@gem_repo], Gem.sources
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
expected = <<-EOF
|
|
|
|
beta-gems.example.com is not a URI
|
|
|
|
EOF
|
|
|
|
|
|
|
|
assert_equal expected, @ui.output
|
|
|
|
assert_equal '', @ui.error
|
|
|
|
end
|
|
|
|
|
2008-03-31 18:40:06 -04:00
|
|
|
def test_execute_clear_all
|
|
|
|
@cmd.handle_options %w[--clear-all]
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
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'
|
|
|
|
|
2008-03-31 18:40:06 -04:00
|
|
|
use_ui @ui do
|
|
|
|
@cmd.execute
|
|
|
|
end
|
|
|
|
|
|
|
|
expected = <<-EOF
|
2008-06-17 18:04:18 -04:00
|
|
|
*** Removed specs cache ***
|
2008-03-31 18:40:06 -04:00
|
|
|
EOF
|
|
|
|
|
|
|
|
assert_equal expected, @ui.output
|
|
|
|
assert_equal '', @ui.error
|
|
|
|
|
2009-06-09 17:38:59 -04:00
|
|
|
refute File.exist?(fetcher.dir), 'cache dir removed'
|
2008-03-31 18:40:06 -04:00
|
|
|
end
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
def test_execute_remove
|
|
|
|
@cmd.handle_options %W[--remove #{@gem_repo}]
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
util_setup_spec_fetcher
|
2007-11-10 02:48:56 -05:00
|
|
|
|
|
|
|
use_ui @ui do
|
|
|
|
@cmd.execute
|
|
|
|
end
|
|
|
|
|
|
|
|
expected = "#{@gem_repo} removed from sources\n"
|
|
|
|
|
|
|
|
assert_equal expected, @ui.output
|
|
|
|
assert_equal '', @ui.error
|
|
|
|
end
|
|
|
|
|
2008-03-31 18:40:06 -04:00
|
|
|
def test_execute_remove_no_network
|
|
|
|
@cmd.handle_options %W[--remove #{@gem_repo}]
|
|
|
|
|
|
|
|
util_setup_fake_fetcher
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
@fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = proc do
|
2008-03-31 18:40:06 -04:00
|
|
|
raise Gem::RemoteFetcher::FetchError
|
|
|
|
end
|
|
|
|
|
|
|
|
use_ui @ui do
|
|
|
|
@cmd.execute
|
|
|
|
end
|
|
|
|
|
|
|
|
expected = "#{@gem_repo} removed from sources\n"
|
|
|
|
|
|
|
|
assert_equal expected, @ui.output
|
|
|
|
assert_equal '', @ui.error
|
|
|
|
end
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
def test_execute_update
|
|
|
|
@cmd.handle_options %w[--update]
|
|
|
|
|
2008-06-17 18:04:18 -04:00
|
|
|
util_setup_fake_fetcher
|
2011-05-31 23:45:05 -04:00
|
|
|
util_setup_spec_fetcher @a1
|
2008-06-17 18:04:18 -04:00
|
|
|
|
2011-05-31 23:45:05 -04:00
|
|
|
specs = Gem::Specification.map { |spec|
|
2008-06-17 18:04:18 -04:00
|
|
|
[spec.name, spec.version, spec.original_platform]
|
2011-05-31 23:45:05 -04:00
|
|
|
}
|
2008-06-17 18:04:18 -04:00
|
|
|
|
|
|
|
@fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] =
|
|
|
|
util_gzip Marshal.dump(specs)
|
|
|
|
|
2011-05-31 23:45:05 -04:00
|
|
|
latest_specs = Gem::Specification.latest_specs.map { |spec|
|
2008-06-17 18:04:18 -04:00
|
|
|
[spec.name, spec.version, spec.original_platform]
|
2011-05-31 23:45:05 -04:00
|
|
|
}
|
2008-06-17 18:04:18 -04:00
|
|
|
|
|
|
|
@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
|
2009-03-05 22:56:38 -05:00
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
end
|
|
|
|
|