rubygems-update 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/ChangeLog +248 -0
- data/README +2 -0
- data/Rakefile +47 -23
- data/bin/gem +9 -4
- data/bin/update_rubygems +15 -1
- data/examples/application/bin/myapp +0 -0
- data/lib/rubygems.rb +506 -373
- data/lib/rubygems/builder.rb +14 -7
- data/lib/rubygems/command.rb +9 -9
- data/lib/rubygems/command_manager.rb +1 -0
- data/lib/rubygems/commands/cleanup_command.rb +67 -69
- data/lib/rubygems/commands/environment_command.rb +16 -10
- data/lib/rubygems/commands/fetch_command.rb +7 -9
- data/lib/rubygems/commands/install_command.rb +9 -3
- data/lib/rubygems/commands/list_command.rb +2 -4
- data/lib/rubygems/commands/mirror_command.rb +1 -1
- data/lib/rubygems/commands/query_command.rb +52 -5
- data/lib/rubygems/commands/sources_command.rb +19 -10
- data/lib/rubygems/commands/specification_command.rb +10 -6
- data/lib/rubygems/commands/uninstall_command.rb +23 -6
- data/lib/rubygems/commands/unpack_command.rb +15 -3
- data/lib/rubygems/commands/update_command.rb +27 -25
- data/lib/rubygems/custom_require.rb +1 -1
- data/lib/rubygems/defaults.rb +8 -1
- data/lib/rubygems/dependency_installer.rb +72 -104
- data/lib/rubygems/digest/digest_adapter.rb +0 -0
- data/lib/rubygems/digest/md5.rb +0 -0
- data/lib/rubygems/digest/sha1.rb +0 -0
- data/lib/rubygems/digest/sha2.rb +0 -0
- data/lib/rubygems/exceptions.rb +22 -1
- data/lib/rubygems/format.rb +16 -10
- data/lib/rubygems/indexer.rb +46 -33
- data/lib/rubygems/indexer/abstract_index_builder.rb +10 -2
- data/lib/rubygems/indexer/latest_index_builder.rb +35 -0
- data/lib/rubygems/indexer/master_index_builder.rb +9 -8
- data/lib/rubygems/indexer/quick_index_builder.rb +5 -3
- data/lib/rubygems/install_update_options.rb +7 -1
- data/lib/rubygems/installer.rb +8 -5
- data/lib/rubygems/package.rb +17 -774
- data/lib/rubygems/package/f_sync_dir.rb +24 -0
- data/lib/rubygems/package/tar_header.rb +245 -0
- data/lib/rubygems/package/tar_input.rb +219 -0
- data/lib/rubygems/package/tar_output.rb +143 -0
- data/lib/rubygems/package/tar_reader.rb +86 -0
- data/lib/rubygems/package/tar_reader/entry.rb +99 -0
- data/lib/rubygems/package/tar_writer.rb +180 -0
- data/lib/rubygems/remote_fetcher.rb +131 -16
- data/lib/rubygems/requirement.rb +2 -0
- data/lib/rubygems/rubygems_version.rb +1 -1
- data/lib/rubygems/security.rb +1 -0
- data/lib/rubygems/server.rb +85 -104
- data/lib/rubygems/source_index.rb +412 -329
- data/lib/rubygems/source_info_cache.rb +232 -99
- data/lib/rubygems/source_info_cache_entry.rb +14 -4
- data/lib/rubygems/specification.rb +9 -10
- data/lib/rubygems/timer.rb +0 -0
- data/lib/rubygems/uninstaller.rb +56 -32
- data/lib/rubygems/user_interaction.rb +4 -10
- data/lib/rubygems/validator.rb +0 -0
- data/scripts/gemdoc.rb +0 -0
- data/scripts/specdoc.rb +0 -0
- data/setup.rb +56 -19
- data/test/gem_installer_test_case.rb +86 -0
- data/test/gem_installer_test_case.rbc +0 -0
- data/test/gem_package_tar_test_case.rb +146 -0
- data/test/gem_package_tar_test_case.rbc +0 -0
- data/test/gemutilities.rb +123 -38
- data/test/gemutilities.rbc +0 -0
- data/test/mockgemui.rb +5 -13
- data/test/mockgemui.rbc +0 -0
- data/test/private_key.pem +27 -0
- data/test/public_cert.pem +20 -0
- data/test/simple_gem.rbc +0 -0
- data/test/test_config.rbc +0 -0
- data/test/test_gem.rb +46 -4
- data/test/test_gem.rbc +0 -0
- data/test/test_gem_builder.rbc +0 -0
- data/test/test_gem_command.rbc +0 -0
- data/test/test_gem_command_manager.rb +4 -2
- data/test/test_gem_command_manager.rbc +0 -0
- data/test/test_gem_commands_build_command.rbc +0 -0
- data/test/test_gem_commands_cert_command.rb +5 -1
- data/test/test_gem_commands_cert_command.rbc +0 -0
- data/test/test_gem_commands_check_command.rbc +0 -0
- data/test/test_gem_commands_contents_command.rbc +0 -0
- data/test/test_gem_commands_dependency_command.rbc +0 -0
- data/test/test_gem_commands_environment_command.rb +17 -1
- data/test/test_gem_commands_environment_command.rbc +0 -0
- data/test/test_gem_commands_fetch_command.rb +6 -5
- data/test/test_gem_commands_fetch_command.rbc +0 -0
- data/test/test_gem_commands_generate_index_command.rbc +0 -0
- data/test/test_gem_commands_install_command.rb +36 -28
- data/test/test_gem_commands_install_command.rbc +0 -0
- data/test/test_gem_commands_mirror_command.rbc +0 -0
- data/test/test_gem_commands_pristine_command.rbc +0 -0
- data/test/test_gem_commands_query_command.rb +143 -19
- data/test/test_gem_commands_query_command.rbc +0 -0
- data/test/test_gem_commands_server_command.rb +1 -1
- data/test/test_gem_commands_server_command.rbc +0 -0
- data/test/test_gem_commands_sources_command.rb +67 -9
- data/test/test_gem_commands_sources_command.rbc +0 -0
- data/test/test_gem_commands_specification_command.rb +3 -2
- data/test/test_gem_commands_specification_command.rbc +0 -0
- data/test/test_gem_commands_unpack_command.rb +46 -4
- data/test/test_gem_commands_unpack_command.rbc +0 -0
- data/test/test_gem_commands_update_command.rb +174 -0
- data/test/test_gem_commands_update_command.rbc +0 -0
- data/test/test_gem_config_file.rbc +0 -0
- data/test/test_gem_dependency.rbc +0 -0
- data/test/test_gem_dependency_installer.rb +172 -187
- data/test/test_gem_dependency_installer.rbc +0 -0
- data/test/test_gem_dependency_list.rbc +0 -0
- data/test/test_gem_digest.rb +0 -0
- data/test/test_gem_digest.rbc +0 -0
- data/test/test_gem_doc_manager.rbc +0 -0
- data/test/test_gem_ext_configure_builder.rb +9 -6
- data/test/test_gem_ext_configure_builder.rbc +0 -0
- data/test/test_gem_ext_ext_conf_builder.rbc +0 -0
- data/test/test_gem_ext_rake_builder.rbc +0 -0
- data/test/test_gem_format.rb +1 -1
- data/test/test_gem_format.rbc +0 -0
- data/test/test_gem_gem_path_searcher.rbc +0 -0
- data/test/test_gem_gem_runner.rbc +0 -0
- data/test/test_gem_indexer.rb +7 -2
- data/test/test_gem_indexer.rbc +0 -0
- data/test/test_gem_install_update_options.rbc +0 -0
- data/test/test_gem_installer.rb +5 -84
- data/test/test_gem_installer.rbc +0 -0
- data/test/test_gem_local_remote_options.rbc +0 -0
- data/test/test_gem_outdated_command.rbc +0 -0
- data/test/test_gem_package_tar_header.rb +137 -0
- data/test/test_gem_package_tar_header.rbc +0 -0
- data/test/test_gem_package_tar_input.rb +119 -0
- data/test/test_gem_package_tar_input.rbc +0 -0
- data/test/test_gem_package_tar_output.rb +104 -0
- data/test/test_gem_package_tar_output.rbc +0 -0
- data/test/test_gem_package_tar_reader.rb +53 -0
- data/test/test_gem_package_tar_reader.rbc +0 -0
- data/test/test_gem_package_tar_reader_entry.rb +116 -0
- data/test/test_gem_package_tar_reader_entry.rbc +0 -0
- data/test/test_gem_package_tar_writer.rb +151 -0
- data/test/test_gem_package_tar_writer.rbc +0 -0
- data/test/test_gem_platform.rbc +0 -0
- data/test/test_gem_remote_fetcher.rb +189 -17
- data/test/test_gem_remote_fetcher.rbc +0 -0
- data/test/test_gem_requirement.rbc +0 -0
- data/test/test_gem_server.rb +13 -12
- data/test/test_gem_server.rbc +0 -0
- data/test/test_gem_source_index.rb +305 -56
- data/test/test_gem_source_index.rbc +0 -0
- data/test/test_gem_source_info_cache.rb +179 -53
- data/test/test_gem_source_info_cache.rbc +0 -0
- data/test/test_gem_source_info_cache_entry.rb +41 -10
- data/test/test_gem_source_info_cache_entry.rbc +0 -0
- data/test/test_gem_specification.rb +7 -7
- data/test/test_gem_specification.rbc +0 -0
- data/test/test_gem_stream_ui.rbc +0 -0
- data/test/test_gem_uninstaller.rb +43 -0
- data/test/test_gem_uninstaller.rbc +0 -0
- data/test/test_gem_validator.rbc +0 -0
- data/test/test_gem_version.rb +1 -1
- data/test/test_gem_version.rbc +0 -0
- data/test/test_gem_version_option.rbc +0 -0
- data/test/test_kernel.rb +1 -0
- data/test/test_kernel.rbc +0 -0
- metadata +85 -8
- metadata.gz.sig +0 -0
- data/lib/rubygems/gem_open_uri.rb +0 -7
- data/lib/rubygems/open-uri.rb +0 -773
- data/test/test_open_uri.rb +0 -13
- data/test/test_package.rb +0 -608
Binary file
|
@@ -25,7 +25,12 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
25
25
|
@sic = Gem::SourceInfoCache.new
|
26
26
|
@sic.instance_variable_set :@fetcher, @fetcher
|
27
27
|
|
28
|
+
@si_new = Gem::SourceIndex.new
|
29
|
+
@sice_new = Gem::SourceInfoCacheEntry.new @si_new, 0
|
30
|
+
|
28
31
|
prep_cache_files @sic
|
32
|
+
|
33
|
+
@sic.reset_cache_data
|
29
34
|
end
|
30
35
|
|
31
36
|
def teardown
|
@@ -35,8 +40,10 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
35
40
|
|
36
41
|
def test_self_cache_refreshes
|
37
42
|
Gem.configuration.update_sources = true #true by default
|
38
|
-
|
39
|
-
|
43
|
+
si = Gem::SourceIndex.new
|
44
|
+
si.add_spec @a1
|
45
|
+
|
46
|
+
@fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = si.dump
|
40
47
|
|
41
48
|
Gem.sources.replace %W[#{@gem_repo}]
|
42
49
|
|
@@ -51,8 +58,10 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
51
58
|
|
52
59
|
def test_self_cache_skips_refresh_based_on_configuration
|
53
60
|
Gem.configuration.update_sources = false
|
54
|
-
|
55
|
-
|
61
|
+
si = Gem::SourceIndex.new
|
62
|
+
si.add_spec @a1
|
63
|
+
|
64
|
+
@fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = si.dump
|
56
65
|
|
57
66
|
Gem.sources.replace %w[#{@gem_repo}]
|
58
67
|
|
@@ -66,20 +75,24 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
66
75
|
end
|
67
76
|
|
68
77
|
def test_self_cache_data
|
69
|
-
|
70
|
-
|
78
|
+
si = Gem::SourceIndex.new
|
79
|
+
si.add_spec @a1
|
80
|
+
|
81
|
+
@fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = si.dump
|
71
82
|
|
72
83
|
Gem::SourceInfoCache.instance_variable_set :@cache, nil
|
73
|
-
sice = Gem::SourceInfoCacheEntry.new
|
84
|
+
sice = Gem::SourceInfoCacheEntry.new si, 0
|
74
85
|
|
75
86
|
use_ui @ui do
|
76
|
-
|
77
|
-
|
87
|
+
gems = Gem::SourceInfoCache.cache_data[@gem_repo].source_index.gems
|
88
|
+
gem_names = gems.map { |_, spec| spec.full_name }
|
89
|
+
|
90
|
+
assert_equal si.gems.map { |_,spec| spec.full_name }, gem_names
|
78
91
|
end
|
79
92
|
end
|
80
93
|
|
81
94
|
def test_cache_data
|
82
|
-
assert_equal [[
|
95
|
+
assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort
|
83
96
|
end
|
84
97
|
|
85
98
|
def test_cache_data_dirty
|
@@ -97,7 +110,14 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
97
110
|
|
98
111
|
data = { @gem_repo => { 'totally' => 'borked' } }
|
99
112
|
|
100
|
-
|
113
|
+
cache_files = [
|
114
|
+
@sic.system_cache_file,
|
115
|
+
@sic.latest_system_cache_file,
|
116
|
+
@sic.user_cache_file,
|
117
|
+
@sic.latest_user_cache_file
|
118
|
+
]
|
119
|
+
|
120
|
+
cache_files.each do |fn|
|
101
121
|
FileUtils.mkdir_p File.dirname(fn)
|
102
122
|
open(fn, "wb") { |f| f.write Marshal.dump(data) }
|
103
123
|
end
|
@@ -113,7 +133,9 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
113
133
|
|
114
134
|
def test_cache_data_none_readable
|
115
135
|
FileUtils.chmod 0222, @sic.system_cache_file
|
136
|
+
FileUtils.chmod 0222, @sic.latest_system_cache_file
|
116
137
|
FileUtils.chmod 0222, @sic.user_cache_file
|
138
|
+
FileUtils.chmod 0222, @sic.latest_user_cache_file
|
117
139
|
return if (File.stat(@sic.system_cache_file).mode & 0222) != 0222
|
118
140
|
return if (File.stat(@sic.user_cache_file).mode & 0222) != 0222
|
119
141
|
# HACK for systems that don't support chmod
|
@@ -129,6 +151,16 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
129
151
|
assert_equal 'unable to locate a writable cache file', e.message
|
130
152
|
end
|
131
153
|
|
154
|
+
def test_cache_data_nonexistent
|
155
|
+
FileUtils.rm @sic.system_cache_file
|
156
|
+
FileUtils.rm @sic.latest_system_cache_file
|
157
|
+
FileUtils.rm @sic.user_cache_file
|
158
|
+
FileUtils.rm @sic.latest_user_cache_file
|
159
|
+
|
160
|
+
# TODO test verbose output
|
161
|
+
assert_equal [], @sic.cache_data.to_a.sort
|
162
|
+
end
|
163
|
+
|
132
164
|
def test_cache_data_repair
|
133
165
|
data = {
|
134
166
|
@gem_repo => {
|
@@ -152,7 +184,8 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
152
184
|
|
153
185
|
def test_cache_data_user_fallback
|
154
186
|
FileUtils.chmod 0444, @sic.system_cache_file
|
155
|
-
|
187
|
+
|
188
|
+
assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort
|
156
189
|
end
|
157
190
|
|
158
191
|
def test_cache_file
|
@@ -174,60 +207,118 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
174
207
|
end
|
175
208
|
|
176
209
|
def test_flush
|
177
|
-
@sic.cache_data[
|
210
|
+
@sic.cache_data[@gem_repo] = @sice_new
|
178
211
|
@sic.update
|
179
212
|
@sic.flush
|
180
213
|
|
181
|
-
assert_equal [[
|
214
|
+
assert_equal [[@gem_repo, @sice_new]],
|
215
|
+
read_cache(@sic.system_cache_file).to_a.sort
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_latest_cache_data
|
219
|
+
util_make_gems
|
220
|
+
|
221
|
+
sice = Gem::SourceInfoCacheEntry.new @source_index, 0
|
222
|
+
|
223
|
+
@sic.set_cache_data @gem_repo => sice
|
224
|
+
latest = @sic.latest_cache_data
|
225
|
+
gems = latest[@gem_repo].source_index.search('a').map { |s| s.full_name }
|
226
|
+
|
227
|
+
assert_equal %w[a-2 a_evil-9], gems
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_latest_cache_file
|
231
|
+
latest_cache_file = File.join File.dirname(@gemcache),
|
232
|
+
"latest_#{File.basename @gemcache}"
|
233
|
+
assert_equal latest_cache_file, @sic.latest_cache_file
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_latest_system_cache_file
|
237
|
+
assert_equal File.join(Gem.dir, "latest_source_cache"),
|
238
|
+
@sic.latest_system_cache_file
|
239
|
+
end
|
240
|
+
|
241
|
+
def test_latest_user_cache_file
|
242
|
+
assert_equal @latest_usrcache, @sic.latest_user_cache_file
|
182
243
|
end
|
183
244
|
|
184
245
|
def test_read_system_cache
|
185
|
-
assert_equal [[
|
246
|
+
assert_equal [[@gem_repo, @sys_sice]], @sic.cache_data.to_a.sort
|
186
247
|
end
|
187
248
|
|
188
249
|
def test_read_user_cache
|
189
|
-
FileUtils.chmod 0444, @sic.
|
250
|
+
FileUtils.chmod 0444, @sic.user_cache_file
|
251
|
+
FileUtils.chmod 0444, @sic.latest_user_cache_file
|
252
|
+
|
253
|
+
@si = Gem::SourceIndex.new
|
254
|
+
@si.add_specs @a1, @a2
|
255
|
+
|
256
|
+
@sice = Gem::SourceInfoCacheEntry.new @si, 0
|
257
|
+
|
258
|
+
@sic.set_cache_data({ @gem_repo => @sice })
|
259
|
+
@sic.update
|
260
|
+
@sic.write_cache
|
261
|
+
@sic.reset_cache_data
|
190
262
|
|
191
|
-
|
263
|
+
user_cache_data = @sic.cache_data.to_a.sort
|
264
|
+
|
265
|
+
assert_equal 1, user_cache_data.length
|
266
|
+
user_cache_data = user_cache_data.first
|
267
|
+
|
268
|
+
assert_equal @gem_repo, user_cache_data.first
|
269
|
+
|
270
|
+
gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
|
271
|
+
assert_equal [@a2.full_name], gems
|
192
272
|
end
|
193
273
|
|
194
274
|
def test_search
|
195
|
-
si = Gem::SourceIndex.new
|
196
|
-
|
197
|
-
|
198
|
-
}
|
275
|
+
si = Gem::SourceIndex.new
|
276
|
+
si.add_spec @a1
|
277
|
+
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
199
278
|
@sic.instance_variable_set :@cache_data, cache_data
|
200
279
|
|
201
|
-
assert_equal [@
|
280
|
+
assert_equal [@a1], @sic.search(//)
|
281
|
+
end
|
282
|
+
|
283
|
+
def test_search_all
|
284
|
+
util_make_gems
|
285
|
+
|
286
|
+
sice = Gem::SourceInfoCacheEntry.new @source_index, 0
|
287
|
+
|
288
|
+
@sic.set_cache_data @gem_repo => sice
|
289
|
+
@sic.update
|
290
|
+
@sic.write_cache
|
291
|
+
@sic.reset_cache_data
|
292
|
+
|
293
|
+
gem_names = @sic.search(//, false, true).map { |spec| spec.full_name }
|
294
|
+
|
295
|
+
assert_equal %w[a-1 a-2 a_evil-9 c-1.2], gem_names
|
202
296
|
end
|
203
297
|
|
204
298
|
def test_search_dependency
|
205
|
-
si = Gem::SourceIndex.new
|
206
|
-
|
207
|
-
|
208
|
-
}
|
299
|
+
si = Gem::SourceIndex.new
|
300
|
+
si.add_spec @a1
|
301
|
+
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
209
302
|
@sic.instance_variable_set :@cache_data, cache_data
|
210
303
|
|
211
|
-
dep = Gem::Dependency.new @
|
304
|
+
dep = Gem::Dependency.new @a1.name, @a1.version
|
212
305
|
|
213
|
-
assert_equal [@
|
306
|
+
assert_equal [@a1], @sic.search(dep)
|
214
307
|
end
|
215
308
|
|
216
309
|
def test_search_no_matches
|
217
|
-
si = Gem::SourceIndex.new
|
218
|
-
|
219
|
-
|
220
|
-
}
|
310
|
+
si = Gem::SourceIndex.new
|
311
|
+
si.add_spec @a1
|
312
|
+
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
221
313
|
@sic.instance_variable_set :@cache_data, cache_data
|
222
314
|
|
223
315
|
assert_equal [], @sic.search(/nonexistent/)
|
224
316
|
end
|
225
317
|
|
226
318
|
def test_search_no_matches_in_source
|
227
|
-
si = Gem::SourceIndex.new
|
228
|
-
|
229
|
-
|
230
|
-
}
|
319
|
+
si = Gem::SourceIndex.new
|
320
|
+
si.add_spec @a1
|
321
|
+
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
231
322
|
@sic.instance_variable_set :@cache_data, cache_data
|
232
323
|
Gem.sources.replace %w[more-gems.example.com]
|
233
324
|
|
@@ -235,13 +326,12 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
235
326
|
end
|
236
327
|
|
237
328
|
def test_search_with_source
|
238
|
-
si = Gem::SourceIndex.new
|
239
|
-
|
240
|
-
|
241
|
-
}
|
329
|
+
si = Gem::SourceIndex.new
|
330
|
+
si.add_spec @a1
|
331
|
+
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
242
332
|
@sic.instance_variable_set :@cache_data, cache_data
|
243
333
|
|
244
|
-
assert_equal [[@
|
334
|
+
assert_equal [[@a1, @gem_repo]],
|
245
335
|
@sic.search_with_source(//)
|
246
336
|
end
|
247
337
|
|
@@ -254,45 +344,81 @@ class TestGemSourceInfoCache < RubyGemTestCase
|
|
254
344
|
end
|
255
345
|
|
256
346
|
def test_write_cache
|
257
|
-
@sic.cache_data[
|
347
|
+
@sic.cache_data[@gem_repo] = @sice_new
|
258
348
|
@sic.write_cache
|
259
349
|
|
260
|
-
assert_equal [[
|
350
|
+
assert_equal [[@gem_repo, @sice_new]],
|
261
351
|
read_cache(@sic.system_cache_file).to_a.sort
|
262
|
-
assert_equal [[
|
352
|
+
assert_equal [[@gem_repo, @usr_sice]],
|
263
353
|
read_cache(@sic.user_cache_file).to_a.sort
|
264
354
|
end
|
265
355
|
|
266
356
|
def test_write_cache_user
|
267
357
|
FileUtils.chmod 0444, @sic.system_cache_file
|
268
|
-
@sic.set_cache_data({
|
358
|
+
@sic.set_cache_data({@gem_repo => @sice_new})
|
269
359
|
@sic.update
|
270
360
|
@sic.write_cache
|
271
361
|
|
272
|
-
|
273
|
-
|
362
|
+
assert File.exist?(@sic.user_cache_file), 'user_cache_file'
|
363
|
+
assert File.exist?(@sic.latest_user_cache_file),
|
364
|
+
'latest_user_cache_file exists'
|
365
|
+
|
366
|
+
assert_equal [[@gem_repo, @sys_sice]],
|
367
|
+
read_cache(@sic.system_cache_file).to_a.sort
|
368
|
+
assert_equal [[@gem_repo, @sice_new]],
|
369
|
+
read_cache(@sic.user_cache_file).to_a.sort
|
274
370
|
end
|
275
371
|
|
276
372
|
def test_write_cache_user_from_scratch
|
277
373
|
FileUtils.rm_rf @sic.user_cache_file
|
374
|
+
FileUtils.rm_rf @sic.latest_user_cache_file
|
375
|
+
|
278
376
|
FileUtils.chmod 0444, @sic.system_cache_file
|
279
|
-
@sic.
|
377
|
+
FileUtils.chmod 0444, @sic.latest_system_cache_file
|
378
|
+
|
379
|
+
@si = Gem::SourceIndex.new
|
380
|
+
@si.add_specs @a1, @a2
|
381
|
+
|
382
|
+
@sice = Gem::SourceInfoCacheEntry.new @si, 0
|
383
|
+
|
384
|
+
@sic.set_cache_data({ @gem_repo => @sice })
|
280
385
|
@sic.update
|
281
386
|
@sic.write_cache
|
282
387
|
|
283
|
-
|
284
|
-
|
388
|
+
assert File.exist?(@sic.user_cache_file), 'system_cache_file'
|
389
|
+
assert File.exist?(@sic.latest_user_cache_file),
|
390
|
+
'latest_system_cache_file'
|
391
|
+
|
392
|
+
user_cache_data = read_cache(@sic.user_cache_file).to_a.sort
|
393
|
+
assert_equal 1, user_cache_data.length
|
394
|
+
user_cache_data = user_cache_data.first
|
395
|
+
|
396
|
+
assert_equal @gem_repo, user_cache_data.first
|
397
|
+
|
398
|
+
gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
|
399
|
+
assert_equal [@a1.full_name, @a2.full_name], gems
|
400
|
+
|
401
|
+
user_cache_data = read_cache(@sic.latest_user_cache_file).to_a.sort
|
402
|
+
assert_equal 1, user_cache_data.length
|
403
|
+
user_cache_data = user_cache_data.first
|
404
|
+
|
405
|
+
assert_equal @gem_repo, user_cache_data.first
|
406
|
+
|
407
|
+
gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
|
408
|
+
assert_equal [@a2.full_name], gems
|
285
409
|
end
|
286
410
|
|
287
411
|
def test_write_cache_user_no_directory
|
288
412
|
FileUtils.rm_rf File.dirname(@sic.user_cache_file)
|
289
413
|
FileUtils.chmod 0444, @sic.system_cache_file
|
290
|
-
@sic.set_cache_data({
|
414
|
+
@sic.set_cache_data({ @gem_repo => @sice_new })
|
291
415
|
@sic.update
|
292
416
|
@sic.write_cache
|
293
417
|
|
294
|
-
assert_equal [[
|
295
|
-
|
418
|
+
assert_equal [[@gem_repo, @sys_sice]],
|
419
|
+
read_cache(@sic.system_cache_file).to_a.sort
|
420
|
+
assert_equal [[@gem_repo, @sice_new]],
|
421
|
+
read_cache(@sic.user_cache_file).to_a.sort
|
296
422
|
end
|
297
423
|
|
298
424
|
end
|
Binary file
|
@@ -9,37 +9,68 @@ class TestGemSourceInfoCacheEntry < RubyGemTestCase
|
|
9
9
|
|
10
10
|
util_setup_fake_fetcher
|
11
11
|
|
12
|
-
@si = Gem::SourceIndex.new
|
12
|
+
@si = Gem::SourceIndex.new
|
13
|
+
@si.add_spec @a1
|
13
14
|
@sic_e = Gem::SourceInfoCacheEntry.new @si, @si.dump.size
|
14
15
|
end
|
15
16
|
|
16
17
|
def test_refresh
|
17
18
|
@fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}.Z"] =
|
18
|
-
proc { raise
|
19
|
+
proc { raise }
|
19
20
|
@fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = @si.dump
|
20
21
|
|
21
|
-
|
22
|
-
@sic_e.refresh @gem_repo
|
22
|
+
use_ui @ui do
|
23
|
+
@sic_e.refresh @gem_repo, true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_refresh_all
|
28
|
+
@si.add_spec @a2
|
29
|
+
|
30
|
+
a1_name = @a1.full_name
|
31
|
+
a2_name = @a2.full_name
|
32
|
+
|
33
|
+
@fetcher.data["#{@gem_repo}/quick/index.rz"] =
|
34
|
+
util_zip [a1_name, a2_name].join("\n")
|
35
|
+
@fetcher.data["#{@gem_repo}/quick/latest_index.rz"] = util_zip a2_name
|
36
|
+
@fetcher.data["#{@gem_repo}/quick/Marshal.#{Gem.marshal_version}/#{a1_name}.gemspec.rz"] = util_zip Marshal.dump(@a1)
|
37
|
+
@fetcher.data["#{@gem_repo}/quick/Marshal.#{Gem.marshal_version}/#{a2_name}.gemspec.rz"] = util_zip Marshal.dump(@a2)
|
38
|
+
@fetcher.data["#{@gem_repo}/Marshal.#{Gem.marshal_version}"] =
|
39
|
+
Marshal.dump @si
|
40
|
+
|
41
|
+
sic_e = Gem::SourceInfoCacheEntry.new Gem::SourceIndex.new, 0
|
42
|
+
|
43
|
+
use_ui @ui do
|
44
|
+
sic_e.refresh @gem_repo, false
|
23
45
|
end
|
46
|
+
|
47
|
+
assert_equal [a2_name], sic_e.source_index.map { |n,| n }.sort
|
48
|
+
|
49
|
+
use_ui @ui do
|
50
|
+
sic_e.refresh @gem_repo, true
|
51
|
+
end
|
52
|
+
|
53
|
+
assert_equal [a1_name, a2_name], sic_e.source_index.map { |n,| n }.sort
|
24
54
|
end
|
25
55
|
|
26
56
|
def test_refresh_bad_uri
|
27
57
|
assert_raise URI::BadURIError do
|
28
|
-
@sic_e.refresh 'gems.example.com'
|
58
|
+
@sic_e.refresh 'gems.example.com', true
|
29
59
|
end
|
30
60
|
end
|
31
61
|
|
32
62
|
def test_refresh_update
|
33
|
-
si = Gem::SourceIndex.new
|
34
|
-
|
63
|
+
si = Gem::SourceIndex.new
|
64
|
+
si.add_spec @a1
|
65
|
+
si.add_spec @b2
|
35
66
|
@fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] = si.dump
|
36
67
|
|
37
68
|
use_ui @ui do
|
38
|
-
@sic_e.refresh @gem_repo
|
69
|
+
@sic_e.refresh @gem_repo, true
|
39
70
|
end
|
40
71
|
|
41
|
-
new_gem = @sic_e.source_index.specification(@
|
42
|
-
assert_equal @
|
72
|
+
new_gem = @sic_e.source_index.specification(@b2.full_name)
|
73
|
+
assert_equal @b2.full_name, new_gem.full_name
|
43
74
|
end
|
44
75
|
|
45
76
|
end
|