rubygems-update 1.3.5 → 1.3.6

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 (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