rubygems-update 1.5.3 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (79) hide show
  1. data.tar.gz.sig +2 -1
  2. data/History.txt +60 -9
  3. data/Manifest.txt +1 -1
  4. data/Rakefile +0 -2
  5. data/lib/rubygems.rb +142 -65
  6. data/lib/rubygems/commands/owner_command.rb +3 -2
  7. data/lib/rubygems/commands/pristine_command.rb +5 -3
  8. data/lib/rubygems/commands/push_command.rb +8 -4
  9. data/lib/rubygems/commands/setup_command.rb +1 -2
  10. data/lib/rubygems/commands/uninstall_command.rb +5 -0
  11. data/lib/rubygems/commands/unpack_command.rb +10 -16
  12. data/lib/rubygems/config_file.rb +12 -5
  13. data/lib/rubygems/custom_require.rb +27 -7
  14. data/lib/rubygems/dependency.rb +33 -8
  15. data/lib/rubygems/dependency_installer.rb +21 -6
  16. data/lib/rubygems/dependency_list.rb +35 -3
  17. data/lib/rubygems/doc_manager.rb +6 -4
  18. data/lib/rubygems/gem_path_searcher.rb +45 -1
  19. data/lib/rubygems/gemcutter_utilities.rb +33 -0
  20. data/lib/rubygems/indexer.rb +1 -0
  21. data/lib/rubygems/installer.rb +11 -7
  22. data/lib/rubygems/installer_test_case.rb +23 -15
  23. data/lib/rubygems/mock_gem_ui.rb +1 -1
  24. data/lib/rubygems/remote_fetcher.rb +29 -10
  25. data/lib/rubygems/requirement.rb +1 -1
  26. data/lib/rubygems/security.rb +1 -0
  27. data/lib/rubygems/source_index.rb +3 -2
  28. data/lib/rubygems/spec_fetcher.rb +3 -1
  29. data/lib/rubygems/specification.rb +54 -12
  30. data/lib/rubygems/test_case.rb +99 -28
  31. data/lib/rubygems/test_utilities.rb +11 -1
  32. data/lib/rubygems/uninstaller.rb +22 -11
  33. data/lib/rubygems/user_interaction.rb +50 -29
  34. data/lib/rubygems/validator.rb +1 -1
  35. data/test/rubygems/fix_openssl_warnings.rb +12 -0
  36. data/test/rubygems/plugin/load/rubygems_plugin.rb +3 -1
  37. data/test/rubygems/test_gem.rb +384 -38
  38. data/test/rubygems/test_gem_builder.rb +1 -1
  39. data/test/rubygems/test_gem_command_manager.rb +2 -2
  40. data/test/rubygems/test_gem_commands_build_command.rb +1 -1
  41. data/test/rubygems/test_gem_commands_cert_command.rb +2 -1
  42. data/test/rubygems/test_gem_commands_dependency_command.rb +6 -5
  43. data/test/rubygems/test_gem_commands_fetch_command.rb +4 -4
  44. data/test/rubygems/test_gem_commands_install_command.rb +21 -18
  45. data/test/rubygems/test_gem_commands_lock_command.rb +1 -1
  46. data/test/rubygems/test_gem_commands_outdated_command.rb +2 -5
  47. data/test/rubygems/test_gem_commands_owner_command.rb +42 -0
  48. data/test/rubygems/test_gem_commands_pristine_command.rb +28 -8
  49. data/test/rubygems/test_gem_commands_push_command.rb +31 -5
  50. data/test/rubygems/test_gem_commands_specification_command.rb +8 -8
  51. data/test/rubygems/test_gem_commands_stale_command.rb +4 -2
  52. data/test/rubygems/test_gem_commands_uninstall_command.rb +23 -4
  53. data/test/rubygems/test_gem_commands_unpack_command.rb +10 -8
  54. data/test/rubygems/test_gem_commands_update_command.rb +16 -13
  55. data/test/rubygems/test_gem_commands_which_command.rb +1 -1
  56. data/test/rubygems/test_gem_config_file.rb +14 -0
  57. data/test/rubygems/test_gem_dependency.rb +39 -0
  58. data/test/rubygems/test_gem_dependency_installer.rb +213 -92
  59. data/test/rubygems/test_gem_dependency_list.rb +37 -17
  60. data/test/rubygems/test_gem_doc_manager.rb +5 -4
  61. data/test/rubygems/test_gem_format.rb +2 -2
  62. data/test/rubygems/test_gem_gemcutter_utilities.rb +48 -0
  63. data/test/rubygems/test_gem_indexer.rb +11 -10
  64. data/test/rubygems/test_gem_install_update_options.rb +0 -2
  65. data/test/rubygems/test_gem_installer.rb +151 -78
  66. data/test/rubygems/test_gem_package_tar_output.rb +3 -0
  67. data/test/rubygems/test_gem_remote_fetcher.rb +23 -14
  68. data/test/rubygems/test_gem_requirement.rb +4 -0
  69. data/test/rubygems/test_gem_security.rb +1 -0
  70. data/test/rubygems/test_gem_source_index.rb +17 -16
  71. data/test/rubygems/test_gem_spec_fetcher.rb +6 -1
  72. data/test/rubygems/test_gem_specification.rb +81 -31
  73. data/test/rubygems/test_gem_stream_ui.rb +11 -1
  74. data/test/rubygems/test_gem_uninstaller.rb +70 -10
  75. data/test/rubygems/test_gem_validator.rb +1 -1
  76. data/test/rubygems/test_kernel.rb +1 -1
  77. metadata +7 -7
  78. metadata.gz.sig +0 -0
  79. data/ChangeLog +0 -5811
@@ -88,7 +88,7 @@ class Gem::Validator
88
88
  next unless gems.include? gem_spec.name unless gems.empty?
89
89
 
90
90
  install_dir = gem_spec.installation_path
91
- gem_path = File.join install_dir, "cache", gem_spec.file_name
91
+ gem_path = Gem.cache_gem(gem_spec.file_name, install_dir)
92
92
  spec_path = File.join install_dir, "specifications", gem_spec.spec_name
93
93
  gem_directory = gem_spec.full_gem_path
94
94
 
@@ -0,0 +1,12 @@
1
+ ##
2
+ # HACK: this drives me BONKERS
3
+
4
+ if defined? OpenSSL then
5
+ class OpenSSL::X509::ExtensionFactory
6
+ alias :old_create_ext :create_ext
7
+ def create_ext(*args)
8
+ @config ||= nil
9
+ old_create_ext(*args)
10
+ end
11
+ end
12
+ end if RUBY_VERSION < "1.9"
@@ -1 +1,3 @@
1
- TestGem::TEST_PLUGIN_LOAD = :loaded
1
+ class TestGem
2
+ TEST_PLUGIN_LOAD = :loaded
3
+ end
@@ -20,6 +20,352 @@ class TestGem < Gem::TestCase
20
20
  util_remove_interrupt_command
21
21
  end
22
22
 
23
+ def assert_activate expected, *specs
24
+ specs.each do |spec|
25
+ case spec
26
+ when Array
27
+ Gem.activate(*spec)
28
+ when String
29
+ Gem.activate spec
30
+ else
31
+ Gem.activate spec.name
32
+ end
33
+ end
34
+
35
+ loaded = Gem.loaded_specs.values.map(&:full_name)
36
+
37
+ assert_equal expected.sort, loaded.sort if expected
38
+ end
39
+
40
+ def test_self_activate
41
+ foo = util_spec 'foo', '1'
42
+
43
+ assert_activate %w[foo-1], foo
44
+ end
45
+
46
+ def loaded_spec_names
47
+ Gem.loaded_specs.values.map(&:full_name).sort
48
+ end
49
+
50
+ def unresolved_names
51
+ Gem.unresolved_deps.values.map(&:to_s).sort
52
+ end
53
+
54
+ def test_self_activate_via_require
55
+ new_spec "a", "1", "b" => "= 1"
56
+ new_spec "b", "1", nil, "lib/b/c.rb"
57
+ new_spec "b", "2", nil, "lib/b/c.rb"
58
+
59
+ Gem.activate "a", "= 1"
60
+ require "b/c"
61
+
62
+ assert_equal %w(a-1 b-1), loaded_spec_names
63
+ end
64
+
65
+ def test_self_activate_deep_unambiguous
66
+ a1 = new_spec "a", "1", "b" => "= 1"
67
+ b1 = new_spec "b", "1", "c" => "= 1"
68
+ b2 = new_spec "b", "2", "c" => "= 2"
69
+ c1 = new_spec "c", "1"
70
+ c2 = new_spec "c", "2"
71
+
72
+ install_specs a1, b1, b2, c1, c2
73
+
74
+ Gem.activate "a", "= 1"
75
+ assert_equal %w(a-1 b-1 c-1), loaded_spec_names
76
+ end
77
+
78
+ def save_loaded_features
79
+ old_loaded_features = $LOADED_FEATURES.dup
80
+ yield
81
+ ensure
82
+ $LOADED_FEATURES.replace old_loaded_features
83
+ end
84
+
85
+ def test_self_activate_ambiguous_direct
86
+ save_loaded_features do
87
+ a1 = new_spec "a", "1", "b" => "> 0"
88
+ b1 = new_spec("b", "1", { "c" => ">= 1" }, "lib/d.rb")
89
+ b2 = new_spec("b", "2", { "c" => ">= 2" }, "lib/d.rb")
90
+ c1 = new_spec "c", "1"
91
+ c2 = new_spec "c", "2"
92
+
93
+ install_specs a1, b1, b2, c1, c2
94
+
95
+ Gem.activate "a", "= 1"
96
+ assert_equal %w(a-1), loaded_spec_names
97
+ assert_equal ["b (> 0)"], unresolved_names
98
+
99
+ require "d"
100
+
101
+ assert_equal %w(a-1 b-2 c-2), loaded_spec_names
102
+ assert_equal [], unresolved_names
103
+ end
104
+ end
105
+
106
+ def test_self_activate_ambiguous_indirect
107
+ save_loaded_features do
108
+ a1 = new_spec "a", "1", "b" => "> 0"
109
+ b1 = new_spec "b", "1", "c" => ">= 1"
110
+ b2 = new_spec "b", "2", "c" => ">= 2"
111
+ c1 = new_spec "c", "1", nil, "lib/d.rb"
112
+ c2 = new_spec "c", "2", nil, "lib/d.rb"
113
+
114
+ install_specs a1, b1, b2, c1, c2
115
+
116
+ Gem.activate "a", "= 1"
117
+ assert_equal %w(a-1), loaded_spec_names
118
+ assert_equal ["b (> 0)"], unresolved_names
119
+
120
+ require "d"
121
+
122
+ assert_equal %w(a-1 b-2 c-2), loaded_spec_names
123
+ assert_equal [], unresolved_names
124
+ end
125
+ end
126
+
127
+ def test_self_activate_ambiguous_unrelated
128
+ save_loaded_features do
129
+ a1 = new_spec "a", "1", "b" => "> 0"
130
+ b1 = new_spec "b", "1", "c" => ">= 1"
131
+ b2 = new_spec "b", "2", "c" => ">= 2"
132
+ c1 = new_spec "c", "1"
133
+ c2 = new_spec "c", "2"
134
+ d1 = new_spec "d", "1", nil, "lib/d.rb"
135
+
136
+ install_specs a1, b1, b2, c1, c2, d1
137
+
138
+ Gem.activate "a", "= 1"
139
+ assert_equal %w(a-1), loaded_spec_names
140
+ assert_equal ["b (> 0)"], unresolved_names
141
+
142
+ require "d"
143
+
144
+ assert_equal %w(a-1 d-1), loaded_spec_names
145
+ assert_equal ["b (> 0)"], unresolved_names
146
+ end
147
+ end
148
+
149
+ def test_self_activate_ambiguous_indirect_conflict
150
+ save_loaded_features do
151
+ a1 = new_spec "a", "1", "b" => "> 0"
152
+ a2 = new_spec "a", "2", "b" => "> 0"
153
+ b1 = new_spec "b", "1", "c" => ">= 1"
154
+ b2 = new_spec "b", "2", "c" => ">= 2"
155
+ c1 = new_spec "c", "1", nil, "lib/d.rb"
156
+ c2 = new_spec("c", "2", { "a" => "1" }, "lib/d.rb") # conflicts with a-2
157
+
158
+ install_specs a1, a2, b1, b2, c1, c2
159
+
160
+ Gem.activate "a", "= 2"
161
+ assert_equal %w(a-2), loaded_spec_names
162
+ assert_equal ["b (> 0)"], unresolved_names
163
+
164
+ require "d"
165
+
166
+ assert_equal %w(a-2 b-1 c-1), loaded_spec_names
167
+ assert_equal [], unresolved_names
168
+ end
169
+ end
170
+
171
+ def test_require_missing
172
+ save_loaded_features do
173
+ assert_raises ::LoadError do
174
+ require "q"
175
+ end
176
+ end
177
+ end
178
+
179
+ def test_self_activate_loaded
180
+ util_spec 'foo', '1'
181
+
182
+ assert Gem.activate 'foo'
183
+ refute Gem.activate 'foo'
184
+ end
185
+
186
+ ##
187
+ # [A] depends on
188
+ # [B] >= 1.0 (satisfied by 2.0)
189
+ # [C] depends on nothing
190
+
191
+ def test_self_activate_unrelated
192
+ a = util_spec 'a', '1.0', 'b' => '>= 1.0'
193
+ util_spec 'b', '1.0'
194
+ c = util_spec 'c', '1.0'
195
+
196
+ assert_activate %w[b-1.0 c-1.0 a-1.0], a, c, "b"
197
+ end
198
+
199
+ ##
200
+ # [A] depends on
201
+ # [B] >= 1.0 (satisfied by 2.0)
202
+ # [C] = 1.0 depends on
203
+ # [B] ~> 1.0
204
+ #
205
+ # and should resolve using b-1.0
206
+
207
+ def test_self_activate_over
208
+ util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '= 1.0'
209
+ util_spec 'b', '1.0'
210
+ util_spec 'b', '1.1'
211
+ util_spec 'b', '2.0'
212
+ util_spec 'c', '1.0', 'b' => '~> 1.0'
213
+
214
+ Gem.activate "a"
215
+
216
+ assert_equal %w[a-1.0 c-1.0], loaded_spec_names
217
+ assert_equal ["b (>= 1.0, ~> 1.0)"], unresolved_names
218
+ end
219
+
220
+ ##
221
+ # [A] depends on
222
+ # [B] ~> 1.0 (satisfied by 1.1)
223
+ # [C] = 1.0 depends on
224
+ # [B] = 1.0
225
+ #
226
+ # and should resolve using b-1.0
227
+ #
228
+ # TODO: this is not under, but over... under would require depth
229
+ # first resolve through a dependency that is later pruned.
230
+
231
+ def test_self_activate_under
232
+ a, _ = util_spec 'a', '1.0', 'b' => '~> 1.0', 'c' => '= 1.0'
233
+ util_spec 'b', '1.0'
234
+ util_spec 'b', '1.1'
235
+ c, _ = util_spec 'c', '1.0', 'b' => '= 1.0'
236
+
237
+ assert_activate %w[b-1.0 c-1.0 a-1.0], a, c, "b"
238
+ end
239
+
240
+ ##
241
+ # [A1] depends on
242
+ # [B] > 0 (satisfied by 2.0)
243
+ # [B1] depends on
244
+ # [C] > 0 (satisfied by 1.0)
245
+ # [B2] depends on nothing!
246
+ # [C1] depends on nothing
247
+
248
+ def test_self_activate_dropped
249
+ a1, = util_spec 'a', '1', 'b' => nil
250
+ util_spec 'b', '1', 'c' => nil
251
+ util_spec 'b', '2'
252
+ util_spec 'c', '1'
253
+
254
+ assert_activate %w[b-2 a-1], a1, "b"
255
+ end
256
+
257
+ ##
258
+ # [A] depends on
259
+ # [B] >= 1.0 (satisfied by 1.1) depends on
260
+ # [Z]
261
+ # [C] >= 1.0 depends on
262
+ # [B] = 1.0
263
+ #
264
+ # and should backtrack to resolve using b-1.0, pruning Z from the
265
+ # resolve.
266
+
267
+ def test_self_activate_raggi_the_edgecase_generator
268
+ a, _ = util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '>= 1.0'
269
+ util_spec 'b', '1.0'
270
+ util_spec 'b', '1.1', 'z' => '>= 1.0'
271
+ c, _ = util_spec 'c', '1.0', 'b' => '= 1.0'
272
+
273
+ assert_activate %w[b-1.0 c-1.0 a-1.0], a, c, "b"
274
+ end
275
+
276
+ def test_self_activate_conflict
277
+ util_spec 'b', '1.0'
278
+ util_spec 'b', '2.0'
279
+
280
+ gem "b", "= 1.0"
281
+
282
+ assert_raises Gem::LoadError do
283
+ gem "b", "= 2.0"
284
+ end
285
+ end
286
+
287
+ ##
288
+ # [A] depends on
289
+ # [B] ~> 1.0 (satisfied by 1.0)
290
+ # [C] = 1.0 depends on
291
+ # [B] = 2.0
292
+
293
+ def test_self_activate_divergent
294
+ a, _ = util_spec 'a', '1.0', 'b' => '~> 1.0', 'c' => '= 1.0'
295
+ util_spec 'b', '1.0'
296
+ util_spec 'b', '2.0'
297
+ c, _ = util_spec 'c', '1.0', 'b' => '= 2.0'
298
+
299
+ e = assert_raises Gem::LoadError do
300
+ assert_activate nil, a, c, "b"
301
+ end
302
+
303
+ assert_match(/Unable to activate c-1.0,/, e.message)
304
+ assert_match(/because b-1.0 conflicts with b .= 2.0/, e.message)
305
+ end
306
+
307
+ ##
308
+ # DOC
309
+
310
+ def test_self_activate_platform_alternate
311
+ @x1_m = util_spec 'x', '1' do |s|
312
+ s.platform = Gem::Platform.new %w[cpu my_platform 1]
313
+ end
314
+
315
+ @x1_o = util_spec 'x', '1' do |s|
316
+ s.platform = Gem::Platform.new %w[cpu other_platform 1]
317
+ end
318
+
319
+ @w1 = util_spec 'w', '1', 'x' => nil
320
+
321
+ util_set_arch 'cpu-my_platform1'
322
+
323
+ assert_activate %w[x-1-cpu-my_platform-1 w-1], @w1, @x1_m
324
+ end
325
+
326
+ ##
327
+ # DOC
328
+
329
+ def test_self_activate_platform_bump
330
+ @y1 = util_spec 'y', '1'
331
+
332
+ @y1_1_p = util_spec 'y', '1.1' do |s|
333
+ s.platform = Gem::Platform.new %w[cpu my_platform 1]
334
+ end
335
+
336
+ @z1 = util_spec 'z', '1', 'y' => nil
337
+
338
+ assert_activate %w[y-1 z-1], @z1, @y1
339
+ end
340
+
341
+ ##
342
+ # [C] depends on
343
+ # [A] = 1.a
344
+ # [B] = 1.0 depends on
345
+ # [A] >= 0 (satisfied by 1.a)
346
+
347
+ def test_self_activate_prerelease
348
+ @c1_pre = util_spec 'c', '1.a', "a" => "1.a", "b" => "1"
349
+ @a1_pre = util_spec 'a', '1.a'
350
+ @b1 = util_spec 'b', '1' do |s|
351
+ s.add_dependency 'a'
352
+ s.add_development_dependency 'aa'
353
+ end
354
+
355
+ assert_activate %w[a-1.a b-1 c-1.a], @c1_pre, @a1_pre, @b1
356
+ end
357
+
358
+ ##
359
+ # DOC
360
+
361
+ def test_self_activate_old_required
362
+ e1, = util_spec 'e', '1', 'd' => '= 1'
363
+ @d1 = util_spec 'd', '1'
364
+ @d2 = util_spec 'd', '2'
365
+
366
+ assert_activate %w[d-1 e-1], e1, "d"
367
+ end
368
+
23
369
  def test_self_all_load_paths
24
370
  util_make_gems
25
371
 
@@ -65,7 +411,7 @@ class TestGem < Gem::TestCase
65
411
  end
66
412
 
67
413
  def test_self_bin_path_nonexistent_binfile
68
- quick_gem 'a', '2' do |s|
414
+ quick_spec 'a', '2' do |s|
69
415
  s.executables = ['exec']
70
416
  end
71
417
  assert_raises(Gem::GemNotFoundException) do
@@ -74,7 +420,7 @@ class TestGem < Gem::TestCase
74
420
  end
75
421
 
76
422
  def test_self_bin_path_no_bin_file
77
- quick_gem 'a', '1'
423
+ quick_spec 'a', '1'
78
424
  assert_raises(Gem::Exception) do
79
425
  Gem.bin_path('a', nil, '1')
80
426
  end
@@ -88,7 +434,7 @@ class TestGem < Gem::TestCase
88
434
 
89
435
  def test_self_bin_path_bin_file_gone_in_latest
90
436
  util_exec_gem
91
- quick_gem 'a', '10' do |s|
437
+ quick_spec 'a', '10' do |s|
92
438
  s.executables = []
93
439
  s.default_executable = nil
94
440
  end
@@ -144,7 +490,7 @@ class TestGem < Gem::TestCase
144
490
  fp.puts 'blah'
145
491
  end
146
492
 
147
- foo = quick_gem 'foo' do |s| s.files = %w[data/foo.txt] end
493
+ foo = quick_spec 'foo' do |s| s.files = %w[data/foo.txt] end
148
494
  install_gem foo
149
495
  end
150
496
 
@@ -206,7 +552,7 @@ class TestGem < Gem::TestCase
206
552
 
207
553
  Gem.ensure_gem_subdirectories @gemhome
208
554
 
209
- assert File.directory?(File.join(@gemhome, "cache"))
555
+ assert File.directory?(Gem.cache_dir(@gemhome))
210
556
  end
211
557
 
212
558
  def test_self_ensure_gem_directories_missing_parents
@@ -218,7 +564,7 @@ class TestGem < Gem::TestCase
218
564
 
219
565
  Gem.ensure_gem_subdirectories gemdir
220
566
 
221
- assert File.directory?("#{gemdir}/cache")
567
+ assert File.directory?(Gem.cache_dir(gemdir))
222
568
  end
223
569
 
224
570
  unless win_platform? then # only for FS that support write protection
@@ -232,7 +578,7 @@ class TestGem < Gem::TestCase
232
578
 
233
579
  Gem.ensure_gem_subdirectories gemdir
234
580
 
235
- refute File.exist?("#{gemdir}/cache")
581
+ refute File.exist?(Gem.cache_dir(gemdir))
236
582
  ensure
237
583
  FileUtils.chmod 0600, gemdir
238
584
  end
@@ -249,7 +595,7 @@ class TestGem < Gem::TestCase
249
595
 
250
596
  Gem.ensure_gem_subdirectories gemdir
251
597
 
252
- refute File.exist?("#{gemdir}/cache")
598
+ refute File.exist?(Gem.cache_dir(gemdir))
253
599
  ensure
254
600
  FileUtils.chmod 0600, parent
255
601
  end
@@ -270,8 +616,8 @@ class TestGem < Gem::TestCase
270
616
 
271
617
  def test_self_find_files
272
618
  discover_path = File.join 'lib', 'sff', 'discover.rb'
273
- cwd = File.expand_path '..', __FILE__
274
- $LOAD_PATH.unshift cwd.dup
619
+ cwd = File.expand_path("test/rubygems", @@project_dir)
620
+ $LOAD_PATH.unshift cwd
275
621
 
276
622
  foo1 = quick_gem 'sff', '1' do |s|
277
623
  s.files << discover_path
@@ -295,7 +641,7 @@ class TestGem < Gem::TestCase
295
641
  Gem.searcher = nil
296
642
 
297
643
  expected = [
298
- File.expand_path('../sff/discover.rb', __FILE__),
644
+ File.expand_path('test/rubygems/sff/discover.rb', @@project_dir),
299
645
  File.join(foo2.full_gem_path, discover_path),
300
646
  File.join(foo1.full_gem_path, discover_path),
301
647
  ]
@@ -321,7 +667,7 @@ class TestGem < Gem::TestCase
321
667
  end
322
668
 
323
669
  def test_self_loaded_specs
324
- foo = quick_gem 'foo'
670
+ foo = quick_spec 'foo'
325
671
  install_gem foo
326
672
  Gem.source_index = nil
327
673
 
@@ -424,22 +770,12 @@ class TestGem < Gem::TestCase
424
770
  end
425
771
 
426
772
  def test_self_prefix
427
- file_name = File.expand_path __FILE__
428
-
429
- prefix = File.dirname File.dirname(file_name)
430
- prefix = File.dirname prefix if File.basename(prefix) == 'test'
431
-
432
- assert_equal prefix, Gem.prefix
773
+ assert_equal @@project_dir, Gem.prefix
433
774
  end
434
775
 
435
776
  def test_self_prefix_libdir
436
777
  orig_libdir = Gem::ConfigMap[:libdir]
437
-
438
- file_name = File.expand_path __FILE__
439
- prefix = File.dirname File.dirname(file_name)
440
- prefix = File.dirname prefix if File.basename(prefix) == 'test'
441
-
442
- Gem::ConfigMap[:libdir] = prefix
778
+ Gem::ConfigMap[:libdir] = @@project_dir
443
779
 
444
780
  assert_nil Gem.prefix
445
781
  ensure
@@ -448,12 +784,7 @@ class TestGem < Gem::TestCase
448
784
 
449
785
  def test_self_prefix_sitelibdir
450
786
  orig_sitelibdir = Gem::ConfigMap[:sitelibdir]
451
-
452
- file_name = File.expand_path __FILE__
453
- prefix = File.dirname File.dirname(file_name)
454
- prefix = File.dirname prefix if File.basename(prefix) == 'test'
455
-
456
- Gem::ConfigMap[:sitelibdir] = prefix
787
+ Gem::ConfigMap[:sitelibdir] = @@project_dir
457
788
 
458
789
  assert_nil Gem.prefix
459
790
  ensure
@@ -617,6 +948,20 @@ class TestGem < Gem::TestCase
617
948
  end
618
949
  end
619
950
 
951
+ def test_self_cache_dir
952
+ util_ensure_gem_dirs
953
+
954
+ assert_equal File.join(@gemhome, 'cache'), Gem.cache_dir
955
+ assert_equal File.join(@userhome, '.gem', Gem.ruby_engine, Gem::ConfigMap[:ruby_version], 'cache'), Gem.cache_dir(Gem.user_dir)
956
+ end
957
+
958
+ def test_self_cache_gem
959
+ util_ensure_gem_dirs
960
+
961
+ assert_equal File.join(@gemhome, 'cache', 'test.gem'), Gem.cache_gem('test.gem')
962
+ assert_equal File.join(@userhome, '.gem', Gem.ruby_engine, Gem::ConfigMap[:ruby_version], 'cache', 'test.gem'), Gem.cache_gem('test.gem', Gem.user_dir)
963
+ end
964
+
620
965
  if Gem.win_platform? then
621
966
  def test_self_user_home_userprofile
622
967
  skip 'Ruby 1.9 properly handles ~ path expansion' unless '1.9' > RUBY_VERSION
@@ -668,10 +1013,10 @@ class TestGem < Gem::TestCase
668
1013
  Dir.chdir @tempdir do
669
1014
  FileUtils.mkdir_p 'lib'
670
1015
  File.open plugin_path, "w" do |fp|
671
- fp.puts "TestGem::TEST_SPEC_PLUGIN_LOAD = :loaded"
1016
+ fp.puts "class TestGem; TEST_SPEC_PLUGIN_LOAD = :loaded; end"
672
1017
  end
673
1018
 
674
- foo = quick_gem 'foo', '1' do |s|
1019
+ foo = quick_spec 'foo', '1' do |s|
675
1020
  s.files << plugin_path
676
1021
  end
677
1022
 
@@ -679,6 +1024,7 @@ class TestGem < Gem::TestCase
679
1024
  end
680
1025
 
681
1026
  Gem.source_index = nil
1027
+ Gem.searcher = nil
682
1028
 
683
1029
  gem 'foo'
684
1030
 
@@ -689,23 +1035,24 @@ class TestGem < Gem::TestCase
689
1035
 
690
1036
  def test_load_env_plugins
691
1037
  with_plugin('load') { Gem.load_env_plugins }
692
- assert_equal :loaded, TEST_PLUGIN_LOAD
1038
+ assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
693
1039
 
694
1040
  util_remove_interrupt_command
695
1041
 
696
1042
  # Should attempt to cause a StandardError
697
1043
  with_plugin('standarderror') { Gem.load_env_plugins }
698
- assert_equal :loaded, TEST_PLUGIN_STANDARDERROR
1044
+ assert_equal :loaded, TEST_PLUGIN_STANDARDERROR rescue nil
699
1045
 
700
1046
  util_remove_interrupt_command
701
1047
 
702
1048
  # Should attempt to cause an Exception
703
1049
  with_plugin('exception') { Gem.load_env_plugins }
704
- assert_equal :loaded, TEST_PLUGIN_EXCEPTION
1050
+ assert_equal :loaded, TEST_PLUGIN_EXCEPTION rescue nil
705
1051
  end
706
1052
 
707
1053
  def with_plugin(path)
708
- test_plugin_path = File.expand_path "../plugin/#{path}", __FILE__
1054
+ test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
1055
+ @@project_dir)
709
1056
 
710
1057
  # A single test plugin should get loaded once only, in order to preserve
711
1058
  # sane test semantics.
@@ -727,7 +1074,7 @@ class TestGem < Gem::TestCase
727
1074
  end
728
1075
 
729
1076
  def util_exec_gem
730
- spec, _ = quick_gem 'a', '4' do |s|
1077
+ spec, _ = quick_spec 'a', '4' do |s|
731
1078
  s.default_executable = 'exec'
732
1079
  s.executables = ['exec', 'abin']
733
1080
  end
@@ -771,6 +1118,5 @@ class TestGem < Gem::TestCase
771
1118
  Gem::Commands.send :remove_const, :InterruptCommand if
772
1119
  Gem::Commands.const_defined? :InterruptCommand
773
1120
  end
774
-
775
1121
  end
776
1122