Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / test / rubygems / test_gem_commands_sources_command.rb
blobf15d44dfe85505862717cf8faf2a31edd08fa7a1
1 require 'test/unit'
2 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
3 require 'rubygems/commands/sources_command'
5 class TestGemCommandsSourcesCommand < RubyGemTestCase
7   def setup
8     super
10     @cmd = Gem::Commands::SourcesCommand.new
11   end
13   def test_execute
14     util_setup_source_info_cache
15     @cmd.handle_options []
17     use_ui @ui do
18       @cmd.execute
19     end
21     expected = <<-EOF
22 *** CURRENT SOURCES ***
24 #{@gem_repo}
25     EOF
27     assert_equal expected, @ui.output
28     assert_equal '', @ui.error
29   end
31   def test_execute_add
32     util_setup_fake_fetcher
34     si = Gem::SourceIndex.new
35     si.add_spec @a1
37     @fetcher.data["http://beta-gems.example.com/Marshal.#{@marshal_version}"] =
38       si.dump
40     @cmd.handle_options %w[--add http://beta-gems.example.com]
42     util_setup_source_info_cache
44     use_ui @ui do
45       @cmd.execute
46     end
48     expected = <<-EOF
49 Bulk updating Gem source index for: http://beta-gems.example.com/
50 http://beta-gems.example.com added to sources
51     EOF
53     assert_equal expected, @ui.output
54     assert_equal '', @ui.error
56     Gem::SourceInfoCache.cache.flush
57     assert_equal %W[http://beta-gems.example.com #{@gem_repo}],
58                  Gem::SourceInfoCache.cache_data.keys.sort
59   end
61   def test_execute_add_nonexistent_source
62     util_setup_fake_fetcher
64     @fetcher.data["http://beta-gems.example.com/Marshal.#{@marshal_version}"] =
65       proc do
66         raise Gem::RemoteFetcher::FetchError, 'it died'
67       end
69     Gem::RemoteFetcher.instance_variable_set :@fetcher, @fetcher
71     @cmd.handle_options %w[--add http://beta-gems.example.com]
73     util_setup_source_info_cache
75     use_ui @ui do
76       @cmd.execute
77     end
79     expected = <<-EOF
80 Error fetching http://beta-gems.example.com:
81 \tit died
82     EOF
84     assert_equal expected, @ui.output
85     assert_equal '', @ui.error
86   end
88   def test_execute_add_bad_uri
89     @cmd.handle_options %w[--add beta-gems.example.com]
91     util_setup_source_info_cache
93     use_ui @ui do
94       @cmd.execute
95     end
97     expected = <<-EOF
98 beta-gems.example.com is not a URI
99     EOF
101     assert_equal expected, @ui.output
102     assert_equal '', @ui.error
103   end
105   def test_execute_clear_all
106     @cmd.handle_options %w[--clear-all]
108     util_setup_source_info_cache
110     cache = Gem::SourceInfoCache.cache
111     cache.update
112     cache.write_cache
114     assert File.exist?(cache.system_cache_file),
115            'system cache file'
116     assert File.exist?(cache.latest_system_cache_file),
117            'latest system cache file'
119     use_ui @ui do
120       @cmd.execute
121     end
123     expected = <<-EOF
124 *** Removed user source cache ***
125 *** Removed latest user source cache ***
126 *** Removed system source cache ***
127 *** Removed latest system source cache ***
128     EOF
130     assert_equal expected, @ui.output
131     assert_equal '', @ui.error
133     assert !File.exist?(cache.system_cache_file),
134            'system cache file'
135     assert !File.exist?(cache.latest_system_cache_file),
136            'latest system cache file'
138   end
140   def test_execute_remove
141     @cmd.handle_options %W[--remove #{@gem_repo}]
143     util_setup_source_info_cache
145     use_ui @ui do
146       @cmd.execute
147     end
149     expected = "#{@gem_repo} removed from sources\n"
151     assert_equal expected, @ui.output
152     assert_equal '', @ui.error
154     Gem::SourceInfoCache.cache.flush
155     assert_equal [], Gem::SourceInfoCache.cache_data.keys
156   end
158   def test_execute_remove_no_network
159     @cmd.handle_options %W[--remove #{@gem_repo}]
161     util_setup_fake_fetcher
163     @fetcher.data["#{@gem_repo}/Marshal.#{Gem.marshal_version}"] = proc do
164       raise Gem::RemoteFetcher::FetchError
165     end
167     use_ui @ui do
168       @cmd.execute
169     end
171     expected = "#{@gem_repo} removed from sources\n"
173     assert_equal expected, @ui.output
174     assert_equal '', @ui.error
176     Gem::SourceInfoCache.cache.flush
177     assert_equal [], Gem::SourceInfoCache.cache_data.keys
178   end
180   def test_execute_update
181     @cmd.handle_options %w[--update]
183     util_setup_source_info_cache
184     Gem::SourceInfoCache.reset
186     util_setup_fake_fetcher
187     si = Gem::SourceIndex.new
188     si.add_spec @a1
189     @fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = si.dump
191     use_ui @ui do
192       @cmd.execute
193     end
195     expected = <<-EOF
196 Bulk updating Gem source index for: #{@gem_repo}/
197 source cache successfully updated
198     EOF
200     assert_equal expected, @ui.output
201     assert_equal '', @ui.error
202   end