rubygems-update 1.3.5 → 1.3.6

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.

Files changed (146) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +8 -1
  3. data/ChangeLog +164 -0
  4. data/History.txt +52 -1
  5. data/Manifest.txt +8 -8
  6. data/README +3 -2
  7. data/Rakefile +49 -5
  8. data/bin/gem +2 -2
  9. data/bin/update_rubygems +9 -11
  10. data/cruise_config.rb +4 -3
  11. data/hide_lib_for_update/note.txt +5 -0
  12. data/lib/rbconfig/datadir.rb +10 -14
  13. data/lib/rubygems.rb +117 -140
  14. data/lib/rubygems/builder.rb +4 -2
  15. data/lib/rubygems/command.rb +51 -48
  16. data/lib/rubygems/command_manager.rb +2 -0
  17. data/lib/rubygems/commands/dependency_command.rb +10 -5
  18. data/lib/rubygems/commands/environment_command.rb +1 -1
  19. data/lib/rubygems/commands/fetch_command.rb +6 -5
  20. data/lib/rubygems/commands/install_command.rb +1 -0
  21. data/lib/rubygems/commands/mirror_command.rb +8 -8
  22. data/lib/rubygems/commands/owner_command.rb +75 -0
  23. data/lib/rubygems/commands/pristine_command.rb +1 -1
  24. data/lib/rubygems/commands/push_command.rb +45 -0
  25. data/lib/rubygems/commands/query_command.rb +4 -1
  26. data/lib/rubygems/commands/rdoc_command.rb +24 -9
  27. data/lib/rubygems/commands/server_command.rb +6 -0
  28. data/lib/rubygems/commands/setup_command.rb +14 -4
  29. data/lib/rubygems/commands/unpack_command.rb +2 -2
  30. data/lib/rubygems/commands/update_command.rb +2 -2
  31. data/lib/rubygems/commands/which_command.rb +7 -9
  32. data/lib/rubygems/config_file.rb +100 -26
  33. data/lib/rubygems/defaults.rb +1 -1
  34. data/lib/rubygems/dependency.rb +133 -75
  35. data/lib/rubygems/dependency_installer.rb +28 -10
  36. data/lib/rubygems/dependency_list.rb +41 -12
  37. data/lib/rubygems/doc_manager.rb +7 -0
  38. data/lib/rubygems/format.rb +16 -20
  39. data/lib/rubygems/gem_openssl.rb +1 -1
  40. data/lib/rubygems/gem_path_searcher.rb +10 -12
  41. data/lib/rubygems/gemcutter_utilities.rb +49 -0
  42. data/lib/rubygems/indexer.rb +2 -2
  43. data/lib/rubygems/install_update_options.rb +1 -9
  44. data/lib/rubygems/installer.rb +35 -76
  45. data/lib/rubygems/local_remote_options.rb +1 -2
  46. data/lib/rubygems/package.rb +0 -1
  47. data/lib/rubygems/package/tar_input.rb +3 -1
  48. data/lib/rubygems/package_task.rb +16 -11
  49. data/lib/rubygems/remote_fetcher.rb +22 -8
  50. data/lib/rubygems/requirement.rb +78 -100
  51. data/lib/rubygems/server.rb +41 -10
  52. data/lib/rubygems/source_index.rb +5 -5
  53. data/lib/rubygems/spec_fetcher.rb +2 -2
  54. data/lib/rubygems/specification.rb +66 -16
  55. data/lib/rubygems/test_utilities.rb +33 -4
  56. data/lib/rubygems/uninstaller.rb +3 -3
  57. data/lib/rubygems/user_interaction.rb +45 -0
  58. data/lib/rubygems/validator.rb +6 -7
  59. data/lib/rubygems/version.rb +206 -149
  60. data/lib/rubygems/version_option.rb +16 -0
  61. data/test/fake_certlib/openssl.rb +1 -1
  62. data/test/functional.rb +0 -7
  63. data/test/gem_installer_test_case.rb +4 -4
  64. data/test/gem_package_tar_test_case.rb +1 -1
  65. data/test/gemutilities.rb +35 -31
  66. data/test/insure_session.rb +0 -8
  67. data/test/mockgemui.rb +0 -8
  68. data/test/simple_gem.rb +2 -8
  69. data/test/test_config.rb +3 -10
  70. data/test/test_gem.rb +9 -14
  71. data/test/test_gem_builder.rb +1 -7
  72. data/test/test_gem_command.rb +1 -8
  73. data/test/test_gem_command_manager.rb +1 -7
  74. data/test/test_gem_commands_build_command.rb +4 -4
  75. data/test/test_gem_commands_cert_command.rb +1 -2
  76. data/test/test_gem_commands_check_command.rb +1 -7
  77. data/test/test_gem_commands_contents_command.rb +1 -1
  78. data/test/test_gem_commands_dependency_command.rb +17 -31
  79. data/test/test_gem_commands_environment_command.rb +1 -1
  80. data/test/test_gem_commands_fetch_command.rb +14 -12
  81. data/test/test_gem_commands_generate_index_command.rb +1 -1
  82. data/test/test_gem_commands_install_command.rb +22 -20
  83. data/test/test_gem_commands_list_command.rb +1 -1
  84. data/test/test_gem_commands_lock_command.rb +1 -1
  85. data/test/test_gem_commands_mirror_command.rb +5 -5
  86. data/test/test_gem_commands_outdated_command.rb +3 -5
  87. data/test/test_gem_commands_owner_command.rb +105 -0
  88. data/test/test_gem_commands_pristine_command.rb +2 -2
  89. data/test/test_gem_commands_push_command.rb +61 -0
  90. data/test/test_gem_commands_query_command.rb +23 -56
  91. data/test/test_gem_commands_server_command.rb +1 -1
  92. data/test/test_gem_commands_sources_command.rb +1 -70
  93. data/test/test_gem_commands_specification_command.rb +3 -4
  94. data/test/test_gem_commands_stale_command.rb +1 -1
  95. data/test/test_gem_commands_uninstall_command.rb +3 -4
  96. data/test/test_gem_commands_unpack_command.rb +1 -1
  97. data/test/test_gem_commands_update_command.rb +13 -13
  98. data/test/test_gem_commands_which_command.rb +66 -0
  99. data/test/test_gem_config_file.rb +13 -7
  100. data/test/test_gem_dependency.rb +82 -134
  101. data/test/test_gem_dependency_installer.rb +55 -30
  102. data/test/test_gem_dependency_list.rb +28 -7
  103. data/test/test_gem_doc_manager.rb +1 -7
  104. data/test/test_gem_ext_configure_builder.rb +2 -2
  105. data/test/test_gem_ext_ext_conf_builder.rb +1 -1
  106. data/test/test_gem_ext_rake_builder.rb +1 -1
  107. data/test/test_gem_format.rb +14 -11
  108. data/test/test_gem_gem_path_searcher.rb +12 -1
  109. data/test/test_gem_gem_runner.rb +1 -1
  110. data/test/test_gem_gemcutter_utilities.rb +103 -0
  111. data/test/test_gem_indexer.rb +44 -51
  112. data/test/test_gem_install_update_options.rb +1 -7
  113. data/test/test_gem_installer.rb +22 -82
  114. data/test/test_gem_local_remote_options.rb +1 -1
  115. data/test/test_gem_package_tar_header.rb +1 -8
  116. data/test/test_gem_package_tar_input.rb +1 -8
  117. data/test/test_gem_package_tar_output.rb +1 -8
  118. data/test/test_gem_package_tar_reader.rb +1 -8
  119. data/test/test_gem_package_tar_reader_entry.rb +1 -8
  120. data/test/test_gem_package_tar_writer.rb +1 -8
  121. data/test/test_gem_package_task.rb +1 -25
  122. data/test/test_gem_platform.rb +4 -4
  123. data/test/test_gem_remote_fetcher.rb +31 -21
  124. data/test/test_gem_requirement.rb +210 -140
  125. data/test/test_gem_server.rb +36 -1
  126. data/test/test_gem_source_index.rb +7 -13
  127. data/test/test_gem_spec_fetcher.rb +17 -47
  128. data/test/test_gem_specification.rb +7 -20
  129. data/test/test_gem_stream_ui.rb +21 -1
  130. data/test/test_gem_uninstaller.rb +1 -2
  131. data/test/test_gem_validator.rb +2 -8
  132. data/test/test_gem_version.rb +110 -254
  133. data/test/test_gem_version_option.rb +1 -1
  134. data/test/test_kernel.rb +1 -7
  135. data/util/CL2notes +1 -1
  136. data/util/gem_prelude.rb.template +64 -41
  137. metadata +33 -71
  138. metadata.gz.sig +0 -0
  139. data/lib/rubygems/digest/digest_adapter.rb +0 -49
  140. data/lib/rubygems/digest/md5.rb +0 -23
  141. data/lib/rubygems/digest/sha1.rb +0 -22
  142. data/lib/rubygems/digest/sha2.rb +0 -22
  143. data/lib/rubygems/timer.rb +0 -28
  144. data/test/test_gem_digest.rb +0 -46
  145. data/test/test_gem_source_info_cache.rb +0 -447
  146. data/test/test_gem_source_info_cache_entry.rb +0 -78
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/dependency_installer'
3
3
 
4
4
  class TestGemDependencyInstaller < RubyGemTestCase
@@ -23,6 +23,16 @@ class TestGemDependencyInstaller < RubyGemTestCase
23
23
  s.add_development_dependency 'aa'
24
24
  end
25
25
 
26
+ @b1_pre, @b1_pre_gem = util_gem 'b', '1.a' do |s|
27
+ s.add_dependency 'a'
28
+ s.add_development_dependency 'aa'
29
+ end
30
+
31
+ @c1_pre, @c1_pre_gem = util_gem 'c', '1.a' do |s|
32
+ s.add_dependency 'a', '1.a'
33
+ s.add_dependency 'b', '1'
34
+ end
35
+
26
36
  @d1, @d1_gem = util_gem 'd', '1'
27
37
  @d2, @d2_gem = util_gem 'd', '2'
28
38
 
@@ -46,8 +56,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
46
56
  @fetcher = Gem::FakeFetcher.new
47
57
  Gem::RemoteFetcher.fetcher = @fetcher
48
58
 
49
- si = util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1, @d2, @x1_m, @x1_o, @w1, @y1,
50
- @y1_1_p, @z1)
59
+ si = util_setup_spec_fetcher(@a1, @a1_pre, @b1, @b1_pre, @c1_pre, @d1, @d2,
60
+ @x1_m, @x1_o, @w1, @y1, @y1_1_p, @z1)
51
61
 
52
62
  util_clear_gems
53
63
  end
@@ -104,8 +114,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
104
114
 
105
115
  assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
106
116
 
107
- assert File.exist?(File.join(@tempdir, 'cache', "#{@a1.full_name}.gem"))
108
- assert File.exist?(File.join(@tempdir, 'cache', "#{@b1.full_name}.gem"))
117
+ assert File.exist?(File.join(@tempdir, 'cache', @a1.file_name))
118
+ assert File.exist?(File.join(@tempdir, 'cache', @b1.file_name))
109
119
  end
110
120
 
111
121
  def test_install_dependencies_satisfied
@@ -124,7 +134,7 @@ class TestGemDependencyInstaller < RubyGemTestCase
124
134
  inst.install 'a-2'
125
135
  end
126
136
 
127
- FileUtils.rm File.join(@tempdir, "#{a2.full_name}.gem")
137
+ FileUtils.rm File.join(@tempdir, a2.file_name)
128
138
 
129
139
  Dir.chdir @tempdir do
130
140
  inst = Gem::DependencyInstaller.new
@@ -259,7 +269,9 @@ class TestGemDependencyInstaller < RubyGemTestCase
259
269
  inst.install 'a'
260
270
  end
261
271
 
262
- assert_match %r|\A#!/usr/bin/env #{Gem::ConfigMap[:ruby_install_name]}\n|,
272
+ env = "/\\S+/env" unless Gem.win_platform?
273
+
274
+ assert_match %r|\A#!#{env} #{Gem::ConfigMap[:ruby_install_name]}\n|,
263
275
  File.read(File.join(@gemhome, 'bin', 'a_bin'))
264
276
  end
265
277
 
@@ -302,10 +314,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
302
314
 
303
315
  assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
304
316
 
305
- assert File.exist?(File.join(gemhome2, 'specifications',
306
- "#{@a1.full_name}.gemspec"))
307
- assert File.exist?(File.join(gemhome2, 'cache',
308
- "#{@a1.full_name}.gem"))
317
+ assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
318
+ assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
309
319
  end
310
320
 
311
321
  def test_install_domain_both
@@ -327,10 +337,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
327
337
  assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
328
338
  a1, b1 = inst.installed_gems
329
339
 
330
- a1_expected = File.join(@gemhome, 'specifications',
331
- "#{a1.full_name}.gemspec")
332
- b1_expected = File.join(@gemhome, 'specifications',
333
- "#{b1.full_name}.gemspec")
340
+ a1_expected = File.join(@gemhome, 'specifications', a1.spec_name)
341
+ b1_expected = File.join(@gemhome, 'specifications', b1.spec_name)
334
342
 
335
343
  assert_equal a1_expected, a1.loaded_from
336
344
  assert_equal b1_expected, b1.loaded_from
@@ -463,9 +471,9 @@ class TestGemDependencyInstaller < RubyGemTestCase
463
471
  File.open @a1_gem, 'rb' do |fp| a1_data = fp.read end
464
472
  File.open a2_o_gem, 'rb' do |fp| a2_o_data = fp.read end
465
473
 
466
- @fetcher.data["http://gems.example.com/gems/#{@a1.full_name}.gem"] =
474
+ @fetcher.data["http://gems.example.com/gems/#{@a1.file_name}"] =
467
475
  a1_data
468
- @fetcher.data["http://gems.example.com/gems/#{a2_o.full_name}.gem"] =
476
+ @fetcher.data["http://gems.example.com/gems/#{a2_o.file_name}"] =
469
477
  a2_o_data
470
478
 
471
479
  inst = Gem::DependencyInstaller.new :domain => :remote
@@ -576,10 +584,29 @@ class TestGemDependencyInstaller < RubyGemTestCase
576
584
 
577
585
  local = gems.last
578
586
  assert_equal 'a-1', local.first.full_name, 'local spec'
579
- assert_equal File.join(@tempdir, "#{@a1.full_name}.gem"),
587
+ assert_equal File.join(@tempdir, @a1.file_name),
580
588
  local.last, 'local path'
581
589
  end
582
590
 
591
+ def test_find_gems_with_sources_prerelease
592
+ installer = Gem::DependencyInstaller.new
593
+
594
+ dependency = Gem::Dependency.new('a', Gem::Requirement.default)
595
+
596
+ releases =
597
+ installer.find_gems_with_sources(dependency).map { |gems, *| gems }
598
+
599
+ assert releases.any? { |s| s.name == 'a' and s.version.to_s == '1' }
600
+ refute releases.any? { |s| s.name == 'a' and s.version.to_s == '1.a' }
601
+
602
+ dependency.prerelease = true
603
+
604
+ prereleases =
605
+ installer.find_gems_with_sources(dependency).map { |gems, *| gems }
606
+
607
+ assert_equal [@a1_pre], prereleases
608
+ end
609
+
583
610
  def test_gather_dependencies
584
611
  inst = Gem::DependencyInstaller.new
585
612
  inst.find_spec_by_name_and_version 'b'
@@ -622,6 +649,15 @@ class TestGemDependencyInstaller < RubyGemTestCase
622
649
  assert_equal %w[y-1 z-1], inst.gems_to_install.map { |s| s.full_name }
623
650
  end
624
651
 
652
+ def test_gather_dependencies_prerelease
653
+ inst = Gem::DependencyInstaller.new :prerelease => true
654
+ inst.find_spec_by_name_and_version 'c', '1.a'
655
+ inst.gather_dependencies
656
+
657
+ assert_equal %w[a-1.a b-1 c-1.a],
658
+ inst.gems_to_install.map { |s| s.full_name }
659
+ end
660
+
625
661
  def test_gather_dependencies_old_required
626
662
  e1, = util_gem 'e', '1' do |s| s.add_dependency 'd', '= 1' end
627
663
 
@@ -636,16 +672,5 @@ class TestGemDependencyInstaller < RubyGemTestCase
636
672
  assert_equal %w[d-1 e-1], inst.gems_to_install.map { |s| s.full_name }
637
673
  end
638
674
 
639
- def test_prerelease_uses_pre_index
640
- installer = Gem::DependencyInstaller.new
641
- pre_installer = Gem::DependencyInstaller.new(:prerelease => true)
642
- dependency = Gem::Dependency.new('a', Gem::Requirement.default)
643
-
644
- releases = installer.find_gems_with_sources(dependency).map{ |gems, *| gems }
645
- prereleases = pre_installer.find_gems_with_sources(dependency).map{ |gems, *| gems }
646
-
647
- assert releases.select{ |s| s.name == 'a' and s.version.to_s == '1' }.first
648
- assert releases.select{ |s| s.name == 'a' and s.version.to_s == '1.a' }.empty?
649
- assert_equal [@a1_pre], prereleases
650
- end
651
675
  end
676
+
@@ -1,10 +1,4 @@
1
- #--
2
- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
- # All rights reserved.
4
- # See LICENSE.txt for permissions.
5
- #++
6
-
7
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
8
2
  require 'rubygems/dependency_list'
9
3
 
10
4
  class TestGemDependencyList < RubyGemTestCase
@@ -71,6 +65,33 @@ class TestGemDependencyList < RubyGemTestCase
71
65
  assert_equal %w[b-1 c-1 a-1], order.map { |s| s.full_name }
72
66
  end
73
67
 
68
+ def test_dependency_order_development
69
+ e1 = quick_gem 'e', '1'
70
+ f1 = quick_gem 'f', '1'
71
+ g1 = quick_gem 'g', '1'
72
+
73
+ @a1.add_dependency 'e'
74
+ @a1.add_dependency 'f'
75
+ @a1.add_dependency 'g'
76
+ g1.add_development_dependency 'a'
77
+
78
+ deplist = Gem::DependencyList.new true
79
+ deplist.add @a1, e1, f1, g1
80
+
81
+ order = deplist.dependency_order
82
+
83
+ assert_equal %w[g-1 a-1 f-1 e-1], order.map { |s| s.full_name },
84
+ 'development on'
85
+
86
+ deplist2 = Gem::DependencyList.new
87
+ deplist2.add @a1, e1, f1, g1
88
+
89
+ order = deplist2.dependency_order
90
+
91
+ assert_equal %w[a-1 g-1 f-1 e-1], order.map { |s| s.full_name },
92
+ 'development off'
93
+ end
94
+
74
95
  def test_dependency_order_diamond
75
96
  util_diamond
76
97
  e1 = quick_gem 'e', '1'
@@ -1,10 +1,4 @@
1
- #--
2
- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
- # All rights reserved.
4
- # See LICENSE.txt for permissions.
5
- #++
6
-
7
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
8
2
  require 'rubygems/doc_manager'
9
3
 
10
4
  class TestGemDocManager < RubyGemTestCase
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/ext'
3
3
 
4
4
  class TestGemExtConfigureBuilder < RubyGemTestCase
@@ -46,7 +46,7 @@ class TestGemExtConfigureBuilder < RubyGemTestCase
46
46
  end
47
47
  end
48
48
 
49
- shell_error_msg = %r{(\./configure: .*)|(Can't open \./configure)}
49
+ shell_error_msg = %r{(\./configure: .*)|(Can't open \./configure(?:: No such file or directory)?)}
50
50
  sh_prefix_configure = "sh ./configure --prefix="
51
51
 
52
52
  expected = %r(configure failed:
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/ext'
3
3
 
4
4
  class TestGemExtExtConfBuilder < RubyGemTestCase
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/ext'
3
3
 
4
4
  class TestGemExtRakeBuilder < RubyGemTestCase
@@ -1,11 +1,5 @@
1
- #--
2
- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
- # All rights reserved.
4
- # See LICENSE.txt for permissions.
5
- #++
6
-
7
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
8
- require File.join(File.expand_path(File.dirname(__FILE__)), 'simple_gem')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require File.expand_path('../simple_gem', __FILE__)
9
3
  require 'rubygems/format'
10
4
 
11
5
  class TestGemFormat < RubyGemTestCase
@@ -16,7 +10,7 @@ class TestGemFormat < RubyGemTestCase
16
10
  @simple_gem = SIMPLE_GEM
17
11
  end
18
12
 
19
- def test_from_file_by_path
13
+ def test_class_from_file_by_path
20
14
  util_make_gems
21
15
 
22
16
  gems = Dir[File.join(@gemhome, 'cache', '*.gem')]
@@ -34,13 +28,22 @@ class TestGemFormat < RubyGemTestCase
34
28
  end
35
29
  end
36
30
 
37
- def test_from_file_by_path_nonexistent
31
+ def test_class_from_file_by_path_empty
32
+ util_make_gems
33
+
34
+ empty_gem = File.join @tempdir, 'empty.gem'
35
+ FileUtils.touch empty_gem
36
+
37
+ assert_nil Gem::Format.from_file_by_path(empty_gem)
38
+ end
39
+
40
+ def test_class_from_file_by_path_nonexistent
38
41
  assert_raises Gem::Exception do
39
42
  Gem::Format.from_file_by_path '/nonexistent'
40
43
  end
41
44
  end
42
45
 
43
- def test_from_io_garbled
46
+ def test_class_from_io_garbled
44
47
  e = assert_raises Gem::Package::FormatError do
45
48
  # subtly bogus input
46
49
  Gem::Format.from_io(StringIO.new(@simple_gem.upcase))
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/gem_path_searcher'
3
3
 
4
4
  class Gem::GemPathSearcher
@@ -22,6 +22,9 @@ class TestGemGemPathSearcher < RubyGemTestCase
22
22
  @foo2 = quick_gem 'foo', '0.2'
23
23
  @bar1 = quick_gem 'bar', '0.1'
24
24
  @bar2 = quick_gem 'bar', '0.2'
25
+ @nrp = quick_gem 'nil_require_paths', '0.1'
26
+ @nrp.require_paths = nil
27
+
25
28
 
26
29
  @fetcher = Gem::FakeFetcher.new
27
30
  Gem::RemoteFetcher.fetcher = @fetcher
@@ -50,6 +53,10 @@ class TestGemGemPathSearcher < RubyGemTestCase
50
53
  assert_equal expected, lib_dirs
51
54
  end
52
55
 
56
+ def test_lib_dirs_for_nil_require_paths
57
+ assert_nil @gps.lib_dirs_for(@nrp)
58
+ end
59
+
53
60
  def test_matching_file_eh
54
61
  refute @gps.matching_file?(@foo1, 'bar')
55
62
  assert @gps.matching_file?(@foo1, 'foo')
@@ -63,5 +70,9 @@ class TestGemGemPathSearcher < RubyGemTestCase
63
70
  assert_equal [expected], @gps.matching_files(@foo1, 'foo')
64
71
  end
65
72
 
73
+ def test_matching_files_nil_require_paths
74
+ assert_empty @gps.matching_files(@nrp, 'foo')
75
+ end
76
+
66
77
  end
67
78
 
@@ -1,4 +1,4 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
1
+ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/gem_runner'
3
3
 
4
4
  class TestGemGemRunner < RubyGemTestCase
@@ -0,0 +1,103 @@
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require 'rubygems'
3
+ require 'rubygems/gemcutter_utilities'
4
+
5
+ class TestGemGemcutterUtilities < RubyGemTestCase
6
+
7
+ def setup
8
+ super
9
+
10
+ ENV['RUBYGEMS_HOST'] = nil
11
+ Gem.configuration.rubygems_api_key = nil
12
+
13
+ @cmd = Gem::Command.new '', 'summary'
14
+ @cmd.extend Gem::GemcutterUtilities
15
+ end
16
+
17
+ def test_sign_in
18
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
19
+ util_sign_in [api_key, 200, 'OK']
20
+
21
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
22
+ assert @fetcher.last_request["authorization"]
23
+ assert_match %r{Signed in.}, @sign_in_ui.output
24
+
25
+ credentials = YAML.load_file Gem.configuration.credentials_path
26
+ assert_equal api_key, credentials[:rubygems_api_key]
27
+ end
28
+
29
+ def test_sign_in_with_host
30
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
31
+ util_sign_in [api_key, 200, 'OK'], 'http://example.com'
32
+
33
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
34
+ assert @fetcher.last_request["authorization"]
35
+ assert_match %r{Signed in.}, @sign_in_ui.output
36
+
37
+ credentials = YAML.load_file Gem.configuration.credentials_path
38
+ assert_equal api_key, credentials[:rubygems_api_key]
39
+ end
40
+
41
+ def test_sign_in_skips_with_existing_credentials
42
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
43
+ Gem.configuration.rubygems_api_key = api_key
44
+
45
+ util_sign_in [api_key, 200, 'OK']
46
+
47
+ assert_equal "", @sign_in_ui.output
48
+ end
49
+
50
+ def test_sign_in_with_other_credentials_doesnt_overwrite_other_keys
51
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
52
+ other_api_key = 'f46dbb18bb6a9c97cdc61b5b85c186a17403cdcbf'
53
+
54
+ FileUtils.mkdir_p File.dirname(Gem.configuration.credentials_path)
55
+ open Gem.configuration.credentials_path, 'w' do |f|
56
+ f.write Hash[:other_api_key, other_api_key].to_yaml
57
+ end
58
+ util_sign_in [api_key, 200, 'OK']
59
+
60
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
61
+ assert_match %r{Signed in.}, @sign_in_ui.output
62
+
63
+ credentials = YAML.load_file Gem.configuration.credentials_path
64
+ assert_equal api_key, credentials[:rubygems_api_key]
65
+ assert_equal other_api_key, credentials[:other_api_key]
66
+ end
67
+
68
+ def test_sign_in_with_bad_credentials
69
+ skip 'Always uses $stdin on windows' if Gem.win_platform?
70
+
71
+ assert_raises MockGemUi::TermError do
72
+ util_sign_in ['Access Denied.', 403, 'Forbidden']
73
+ end
74
+
75
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
76
+ assert_match %r{Access Denied.}, @sign_in_ui.output
77
+ end
78
+
79
+ def util_sign_in response, host = nil
80
+ skip 'Always uses $stdin on windows' if Gem.win_platform?
81
+
82
+ email = 'you@example.com'
83
+ password = 'secret'
84
+
85
+ if host
86
+ ENV['RUBYGEMS_HOST'] = host
87
+ else
88
+ host = "https://rubygems.org"
89
+ end
90
+
91
+ @fetcher = Gem::FakeFetcher.new
92
+ @fetcher.data["#{host}/api/v1/api_key"] = response
93
+ Gem::RemoteFetcher.fetcher = @fetcher
94
+
95
+ @sign_in_ui = MockGemUi.new "#{email}\n#{password}\n"
96
+
97
+ use_ui @sign_in_ui do
98
+ @cmd.sign_in
99
+ end
100
+ end
101
+
102
+ end
103
+
@@ -1,11 +1,4 @@
1
- #--
2
- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3
- # All rights reserved.
4
- # See LICENSE.txt for permissions.
5
- #++
6
-
7
- require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
8
-
1
+ require File.expand_path('../gemutilities', __FILE__)
9
2
  require 'rubygems/indexer'
10
3
 
11
4
  unless ''.respond_to? :to_xs then
@@ -145,19 +138,19 @@ pl-1-i386-linux
145
138
 
146
139
  assert_equal expected, latest_quick_index
147
140
 
148
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
149
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
150
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
151
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
141
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
142
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
143
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
144
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
152
145
 
153
146
  assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
154
- refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
147
+ refute_indexed quickdir, "#{@pl1.spec_name}.rz"
155
148
 
156
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
157
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
149
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
150
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
158
151
 
159
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec"
160
- refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
152
+ refute_indexed quickdir, @c1_2.spec_name
153
+ refute_indexed marshal_quickdir, @c1_2.spec_name
161
154
 
162
155
  assert_indexed @tempdir, "specs.#{@marshal_version}"
163
156
  assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -172,7 +165,7 @@ pl-1-i386-linux
172
165
  <title>ExampleForge gems</title>
173
166
  <link>http://example.com</link>
174
167
  <description>Recently released gems from http://example.com</description>
175
- <generator>RubyGems v1.3.4</generator>
168
+ <generator>RubyGems v#{Gem::RubyGemsVersion}</generator>
176
169
  <docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
177
170
  <item>
178
171
  <title>a-2</title>
@@ -325,19 +318,19 @@ eighty characters.&lt;/pre&gt;
325
318
  assert_indexed quickdir, "latest_index"
326
319
  assert_indexed quickdir, "latest_index.rz"
327
320
 
328
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
329
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
330
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
331
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
321
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
322
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
323
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
324
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
332
325
 
333
326
  assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
334
- refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
327
+ refute_indexed quickdir, "#{@pl1.spec_name}.rz"
335
328
 
336
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
337
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
329
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
330
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
338
331
 
339
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec"
340
- refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
332
+ refute_indexed quickdir, "#{@c1_2.spec_name}"
333
+ refute_indexed marshal_quickdir, "#{@c1_2.spec_name}"
341
334
 
342
335
  refute_indexed @tempdir, "specs.#{@marshal_version}"
343
336
  refute_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -379,15 +372,15 @@ eighty characters.&lt;/pre&gt;
379
372
  assert_indexed quickdir, "latest_index"
380
373
  assert_indexed quickdir, "latest_index.rz"
381
374
 
382
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
383
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
384
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
385
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
375
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
376
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
377
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
378
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
386
379
 
387
380
  assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
388
381
 
389
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
390
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
382
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
383
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
391
384
 
392
385
  assert_indexed @tempdir, "specs.#{@marshal_version}"
393
386
  assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -421,19 +414,19 @@ eighty characters.&lt;/pre&gt;
421
414
  refute_indexed quickdir, "latest_index"
422
415
  refute_indexed quickdir, "latest_index.rz"
423
416
 
424
- refute_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
425
- refute_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
426
- refute_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
427
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
417
+ refute_indexed quickdir, "#{@a1.spec_name}.rz"
418
+ refute_indexed quickdir, "#{@a2.spec_name}.rz"
419
+ refute_indexed quickdir, "#{@b2.spec_name}.rz"
420
+ refute_indexed quickdir, "#{@c1_2.spec_name}.rz"
428
421
 
429
422
  refute_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
430
- refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
423
+ refute_indexed quickdir, "#{@pl1.spec_name}.rz"
431
424
 
432
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
433
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
425
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
426
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
434
427
 
435
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec"
436
- refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
428
+ refute_indexed quickdir, "#{@c1_2.spec_name}"
429
+ refute_indexed marshal_quickdir, "#{@c1_2.spec_name}"
437
430
 
438
431
  assert_indexed @tempdir, "specs.#{@marshal_version}"
439
432
  assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -475,15 +468,15 @@ eighty characters.&lt;/pre&gt;
475
468
  assert_indexed quickdir, "latest_index"
476
469
  assert_indexed quickdir, "latest_index.rz"
477
470
 
478
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
479
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
480
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
481
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
471
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
472
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
473
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
474
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
482
475
 
483
476
  assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
484
477
 
485
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
486
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
478
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
479
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
487
480
 
488
481
  assert_indexed @tempdir, "specs.#{@marshal_version}"
489
482
  assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -637,14 +630,14 @@ eighty characters.&lt;/pre&gt;
637
630
  @d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
638
631
 
639
632
  gems = File.join @tempdir, 'gems'
640
- FileUtils.mv File.join(@gemhome, 'cache', "#{@d2_1.full_name}.gem"), gems
641
- FileUtils.mv File.join(@gemhome, 'cache', "#{@d2_1_a.full_name}.gem"), gems
633
+ FileUtils.mv File.join(@gemhome, 'cache', @d2_1.file_name), gems
634
+ FileUtils.mv File.join(@gemhome, 'cache', @d2_1_a.file_name), gems
642
635
 
643
636
  use_ui @ui do
644
637
  @indexer.update_index
645
638
  end
646
639
 
647
- assert_indexed marshal_quickdir, "#{@d2_1.full_name}.gemspec.rz"
640
+ assert_indexed marshal_quickdir, "#{@d2_1.spec_name}.rz"
648
641
 
649
642
  specs_index = Marshal.load Gem.read_binary(@indexer.dest_specs_index)
650
643