rubygems-update 2.1.11 → 2.2.0.rc.1

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 (190) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.autotest +37 -12
  5. data/History.txt +99 -2
  6. data/MIT.txt +1 -0
  7. data/Manifest.txt +59 -19
  8. data/Rakefile +4 -6
  9. data/lib/gauntlet_rubygems.rb +1 -1
  10. data/lib/rubygems.rb +102 -80
  11. data/lib/rubygems/available_set.rb +2 -2
  12. data/lib/rubygems/basic_specification.rb +97 -8
  13. data/lib/rubygems/commands/install_command.rb +58 -15
  14. data/lib/rubygems/commands/list_command.rb +1 -7
  15. data/lib/rubygems/commands/outdated_command.rb +1 -1
  16. data/lib/rubygems/commands/pristine_command.rb +14 -1
  17. data/lib/rubygems/commands/push_command.rb +9 -4
  18. data/lib/rubygems/commands/query_command.rb +33 -17
  19. data/lib/rubygems/commands/search_command.rb +0 -6
  20. data/lib/rubygems/commands/specification_command.rb +1 -1
  21. data/lib/rubygems/commands/unpack_command.rb +1 -1
  22. data/lib/rubygems/commands/update_command.rb +4 -1
  23. data/lib/rubygems/commands/which_command.rb +5 -8
  24. data/lib/rubygems/compatibility.rb +3 -0
  25. data/lib/rubygems/core_ext/kernel_gem.rb +6 -0
  26. data/lib/rubygems/defaults.rb +19 -0
  27. data/lib/rubygems/dependency_installer.rb +28 -9
  28. data/lib/rubygems/doctor.rb +17 -11
  29. data/lib/rubygems/errors.rb +16 -3
  30. data/lib/rubygems/exceptions.rb +52 -5
  31. data/lib/rubygems/ext.rb +1 -2
  32. data/lib/rubygems/ext/build_error.rb +6 -0
  33. data/lib/rubygems/ext/builder.rb +50 -17
  34. data/lib/rubygems/ext/cmake_builder.rb +1 -1
  35. data/lib/rubygems/ext/configure_builder.rb +1 -3
  36. data/lib/rubygems/ext/ext_conf_builder.rb +9 -3
  37. data/lib/rubygems/ext/rake_builder.rb +2 -5
  38. data/lib/rubygems/gemcutter_utilities.rb +8 -1
  39. data/lib/rubygems/installer.rb +14 -4
  40. data/lib/rubygems/installer_test_case.rb +0 -5
  41. data/lib/rubygems/package.rb +11 -2
  42. data/lib/rubygems/psych_additions.rb +1 -1
  43. data/lib/rubygems/rdoc.rb +1 -1
  44. data/lib/rubygems/remote_fetcher.rb +3 -3
  45. data/lib/rubygems/request.rb +16 -8
  46. data/lib/rubygems/request_set.rb +133 -42
  47. data/lib/rubygems/request_set/gem_dependency_api.rb +493 -11
  48. data/lib/rubygems/request_set/lockfile.rb +579 -0
  49. data/lib/rubygems/requirement.rb +58 -30
  50. data/lib/rubygems/resolver.rb +471 -0
  51. data/lib/rubygems/resolver/activation_request.rb +165 -0
  52. data/lib/rubygems/resolver/api_set.rb +110 -0
  53. data/lib/rubygems/resolver/api_specification.rb +79 -0
  54. data/lib/rubygems/resolver/best_set.rb +31 -0
  55. data/lib/rubygems/resolver/composed_set.rb +39 -0
  56. data/lib/rubygems/resolver/conflict.rb +122 -0
  57. data/lib/rubygems/{dependency_resolver → resolver}/current_set.rb +1 -4
  58. data/lib/rubygems/{dependency_resolver → resolver}/dependency_request.rb +37 -7
  59. data/lib/rubygems/resolver/git_set.rb +119 -0
  60. data/lib/rubygems/resolver/git_specification.rb +35 -0
  61. data/lib/rubygems/resolver/index_set.rb +74 -0
  62. data/lib/rubygems/resolver/index_specification.rb +69 -0
  63. data/lib/rubygems/resolver/installed_specification.rb +40 -0
  64. data/lib/rubygems/{dependency_resolver → resolver}/installer_set.rb +18 -17
  65. data/lib/rubygems/resolver/local_specification.rb +16 -0
  66. data/lib/rubygems/resolver/lock_set.rb +78 -0
  67. data/lib/rubygems/resolver/lock_specification.rb +58 -0
  68. data/lib/rubygems/resolver/requirement_list.rb +81 -0
  69. data/lib/rubygems/resolver/set.rb +27 -0
  70. data/lib/rubygems/resolver/spec_specification.rb +58 -0
  71. data/lib/rubygems/resolver/specification.rb +89 -0
  72. data/lib/rubygems/resolver/stats.rb +44 -0
  73. data/lib/rubygems/resolver/vendor_set.rb +83 -0
  74. data/lib/rubygems/resolver/vendor_specification.rb +24 -0
  75. data/lib/rubygems/security/trust_dir.rb +16 -2
  76. data/lib/rubygems/source.rb +71 -18
  77. data/lib/rubygems/source/git.rb +218 -0
  78. data/lib/rubygems/source/installed.rb +8 -1
  79. data/lib/rubygems/source/local.rb +14 -8
  80. data/lib/rubygems/source/lock.rb +48 -0
  81. data/lib/rubygems/source/specific_file.rb +14 -3
  82. data/lib/rubygems/source/vendor.rb +27 -0
  83. data/lib/rubygems/source_list.rb +74 -12
  84. data/lib/rubygems/spec_fetcher.rb +36 -4
  85. data/lib/rubygems/specification.rb +214 -65
  86. data/lib/rubygems/stub_specification.rb +57 -1
  87. data/lib/rubygems/syck_hack.rb +3 -3
  88. data/lib/rubygems/test_case.rb +226 -59
  89. data/lib/rubygems/test_utilities.rb +198 -0
  90. data/lib/rubygems/uninstaller.rb +22 -10
  91. data/lib/rubygems/uri_formatter.rb +20 -0
  92. data/lib/rubygems/user_interaction.rb +193 -71
  93. data/lib/rubygems/util.rb +121 -0
  94. data/lib/rubygems/util/list.rb +4 -0
  95. data/lib/rubygems/util/stringio.rb +34 -0
  96. data/lib/rubygems/validator.rb +6 -2
  97. data/lib/rubygems/version.rb +4 -8
  98. data/test/rubygems/test_bundled_ca.rb +1 -1
  99. data/test/rubygems/test_gem.rb +137 -29
  100. data/test/rubygems/test_gem_available_set.rb +19 -0
  101. data/test/rubygems/test_gem_commands_build_command.rb +1 -1
  102. data/test/rubygems/test_gem_commands_cert_command.rb +2 -2
  103. data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -13
  104. data/test/rubygems/test_gem_commands_dependency_command.rb +24 -34
  105. data/test/rubygems/test_gem_commands_fetch_command.rb +43 -48
  106. data/test/rubygems/test_gem_commands_install_command.rb +244 -279
  107. data/test/rubygems/test_gem_commands_list_command.rb +3 -3
  108. data/test/rubygems/test_gem_commands_outdated_command.rb +7 -12
  109. data/test/rubygems/test_gem_commands_pristine_command.rb +73 -27
  110. data/test/rubygems/test_gem_commands_push_command.rb +76 -8
  111. data/test/rubygems/test_gem_commands_query_command.rb +239 -49
  112. data/test/rubygems/test_gem_commands_sources_command.rb +10 -43
  113. data/test/rubygems/test_gem_commands_specification_command.rb +24 -47
  114. data/test/rubygems/test_gem_commands_stale_command.rb +2 -2
  115. data/test/rubygems/test_gem_commands_uninstall_command.rb +3 -3
  116. data/test/rubygems/test_gem_commands_unpack_command.rb +16 -30
  117. data/test/rubygems/test_gem_commands_update_command.rb +149 -134
  118. data/test/rubygems/test_gem_commands_which_command.rb +4 -2
  119. data/test/rubygems/test_gem_dependency_installer.rb +68 -0
  120. data/test/rubygems/test_gem_dependency_list.rb +17 -17
  121. data/test/rubygems/test_gem_dependency_resolution_error.rb +28 -0
  122. data/test/rubygems/test_gem_doctor.rb +1 -1
  123. data/test/rubygems/test_gem_ext_builder.rb +178 -8
  124. data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -7
  125. data/test/rubygems/test_gem_ext_configure_builder.rb +8 -10
  126. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +18 -21
  127. data/test/rubygems/test_gem_ext_rake_builder.rb +1 -3
  128. data/test/rubygems/test_gem_impossible_dependencies_error.rb +10 -6
  129. data/test/rubygems/test_gem_indexer.rb +6 -6
  130. data/test/rubygems/test_gem_installer.rb +29 -10
  131. data/test/rubygems/test_gem_local_remote_options.rb +1 -1
  132. data/test/rubygems/test_gem_package.rb +18 -0
  133. data/test/rubygems/test_gem_rdoc.rb +1 -1
  134. data/test/rubygems/test_gem_remote_fetcher.rb +1 -1
  135. data/test/rubygems/test_gem_request.rb +37 -10
  136. data/test/rubygems/test_gem_request_set.rb +271 -9
  137. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +684 -0
  138. data/test/rubygems/test_gem_request_set_lockfile.rb +849 -0
  139. data/test/rubygems/test_gem_requirement.rb +21 -0
  140. data/test/rubygems/{test_gem_dependency_resolver.rb → test_gem_resolver.rb} +231 -70
  141. data/test/rubygems/test_gem_resolver_activation_request.rb +63 -0
  142. data/test/rubygems/test_gem_resolver_api_set.rb +167 -0
  143. data/test/rubygems/test_gem_resolver_api_specification.rb +104 -0
  144. data/test/rubygems/test_gem_resolver_best_set.rb +30 -0
  145. data/test/rubygems/test_gem_resolver_conflict.rb +75 -0
  146. data/test/rubygems/test_gem_resolver_dependency_request.rb +20 -0
  147. data/test/rubygems/test_gem_resolver_git_set.rb +148 -0
  148. data/test/rubygems/test_gem_resolver_git_specification.rb +100 -0
  149. data/test/rubygems/test_gem_resolver_index_set.rb +28 -0
  150. data/test/rubygems/test_gem_resolver_index_specification.rb +89 -0
  151. data/test/rubygems/test_gem_resolver_installed_specification.rb +49 -0
  152. data/test/rubygems/test_gem_resolver_installer_set.rb +22 -0
  153. data/test/rubygems/test_gem_resolver_local_specification.rb +45 -0
  154. data/test/rubygems/test_gem_resolver_lock_set.rb +57 -0
  155. data/test/rubygems/test_gem_resolver_lock_specification.rb +87 -0
  156. data/test/rubygems/test_gem_resolver_requirement_list.rb +20 -0
  157. data/test/rubygems/test_gem_resolver_specification.rb +32 -0
  158. data/test/rubygems/test_gem_resolver_vendor_set.rb +67 -0
  159. data/test/rubygems/test_gem_resolver_vendor_specification.rb +83 -0
  160. data/test/rubygems/test_gem_server.rb +4 -4
  161. data/test/rubygems/test_gem_source.rb +54 -64
  162. data/test/rubygems/test_gem_source_git.rb +231 -0
  163. data/test/rubygems/test_gem_source_list.rb +24 -0
  164. data/test/rubygems/test_gem_source_local.rb +1 -1
  165. data/test/rubygems/test_gem_source_lock.rb +114 -0
  166. data/test/rubygems/test_gem_source_vendor.rb +27 -0
  167. data/test/rubygems/test_gem_spec_fetcher.rb +116 -61
  168. data/test/rubygems/test_gem_specification.rb +526 -94
  169. data/test/rubygems/test_gem_stub_specification.rb +123 -10
  170. data/test/rubygems/test_gem_uninstaller.rb +28 -2
  171. data/test/rubygems/test_gem_util.rb +31 -0
  172. data/test/rubygems/test_gem_validator.rb +9 -0
  173. data/util/update_bundled_ca_certificates.rb +8 -1
  174. metadata +89 -29
  175. metadata.gz.sig +2 -4
  176. data/lib/rubygems/dependency_resolver.rb +0 -254
  177. data/lib/rubygems/dependency_resolver/activation_request.rb +0 -109
  178. data/lib/rubygems/dependency_resolver/api_set.rb +0 -65
  179. data/lib/rubygems/dependency_resolver/api_specification.rb +0 -39
  180. data/lib/rubygems/dependency_resolver/composed_set.rb +0 -18
  181. data/lib/rubygems/dependency_resolver/dependency_conflict.rb +0 -85
  182. data/lib/rubygems/dependency_resolver/index_set.rb +0 -64
  183. data/lib/rubygems/dependency_resolver/index_specification.rb +0 -60
  184. data/lib/rubygems/dependency_resolver/installed_specification.rb +0 -52
  185. data/test/rubygems/test_gem_dependency_resolver_api_specification.rb +0 -33
  186. data/test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb +0 -36
  187. data/test/rubygems/test_gem_dependency_resolver_index_set.rb +0 -53
  188. data/test/rubygems/test_gem_dependency_resolver_index_specification.rb +0 -73
  189. data/test/rubygems/test_gem_dependency_resolver_installed_specification.rb +0 -19
  190. data/test/rubygems/test_gem_dependency_resolver_installer_set.rb +0 -28
@@ -57,13 +57,7 @@ install (FILES test.txt DESTINATION bin)
57
57
  shell_error_msg = %r{(CMake Error: .*)}
58
58
  sh_prefix_cmake = "cmake . -DCMAKE_INSTALL_PREFIX="
59
59
 
60
- expected = %r(cmake failed:
61
-
62
- #{Regexp.escape sh_prefix_cmake}#{Regexp.escape @dest_path}
63
- #{shell_error_msg}
64
- )
65
-
66
- assert_match expected, error.message
60
+ assert_match 'cmake failed', error.message
67
61
 
68
62
  assert_match %r%^#{sh_prefix_cmake}#{Regexp.escape @dest_path}%, output
69
63
  assert_match %r%#{shell_error_msg}%, output
@@ -6,7 +6,8 @@ class TestGemExtConfigureBuilder < Gem::TestCase
6
6
  def setup
7
7
  super
8
8
 
9
- @makefile_body = "all:\n\t@echo ok\ninstall:\n\t@echo ok"
9
+ @makefile_body =
10
+ "clean:\n\t@echo ok\nall:\n\t@echo ok\ninstall:\n\t@echo ok"
10
11
 
11
12
  @ext = File.join @tempdir, 'ext'
12
13
  @dest_path = File.join @tempdir, 'prefix'
@@ -30,6 +31,8 @@ class TestGemExtConfigureBuilder < Gem::TestCase
30
31
 
31
32
  assert_equal "sh ./configure --prefix=#{@dest_path}", output.shift
32
33
  assert_equal "", output.shift
34
+ assert_contains_make_command 'clean', output.shift
35
+ assert_match(/^ok$/m, output.shift)
33
36
  assert_contains_make_command '', output.shift
34
37
  assert_match(/^ok$/m, output.shift)
35
38
  assert_contains_make_command 'install', output.shift
@@ -49,13 +52,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
49
52
  shell_error_msg = %r{(\./configure: .*)|((?:Can't|cannot) open \./configure(?:: No such file or directory)?)}
50
53
  sh_prefix_configure = "sh ./configure --prefix="
51
54
 
52
- expected = %r(configure failed:
53
-
54
- #{Regexp.escape sh_prefix_configure}#{Regexp.escape @dest_path}
55
- (?:.*?: )?#{shell_error_msg}
56
- )
57
-
58
- assert_match expected, error.message
55
+ assert_match 'configure failed', error.message
59
56
 
60
57
  assert_equal "#{sh_prefix_configure}#{@dest_path}", output.shift
61
58
  assert_match %r(#{shell_error_msg}), output.shift
@@ -76,8 +73,9 @@ class TestGemExtConfigureBuilder < Gem::TestCase
76
73
  Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output
77
74
  end
78
75
 
79
- assert_contains_make_command '', output[0]
80
- assert_contains_make_command 'install', output[2]
76
+ assert_contains_make_command 'clean', output[0]
77
+ assert_contains_make_command '', output[2]
78
+ assert_contains_make_command 'install', output[4]
81
79
  end
82
80
 
83
81
  end
@@ -35,8 +35,9 @@ class TestGemExtExtConfBuilder < Gem::TestCase
35
35
 
36
36
  assert_match(/^#{Gem.ruby} extconf.rb/, output[0])
37
37
  assert_equal "creating Makefile\n", output[1]
38
- assert_contains_make_command '', output[2]
39
- assert_contains_make_command 'install', output[4]
38
+ assert_contains_make_command 'clean', output[2]
39
+ assert_contains_make_command '', output[4]
40
+ assert_contains_make_command 'install', output[6]
40
41
  assert_empty Dir.glob(File.join(@ext, 'siteconf*.rb'))
41
42
  end
42
43
 
@@ -54,8 +55,9 @@ class TestGemExtExtConfBuilder < Gem::TestCase
54
55
  end
55
56
 
56
57
  assert_equal "creating Makefile\n", output[1]
57
- assert_contains_make_command '', output[2]
58
- assert_contains_make_command 'install', output[4]
58
+ assert_contains_make_command 'clean', output[2]
59
+ assert_contains_make_command '', output[4]
60
+ assert_contains_make_command 'install', output[6]
59
61
  ensure
60
62
  RbConfig::CONFIG['configure_args'] = configure_args
61
63
  end
@@ -77,8 +79,8 @@ class TestGemExtExtConfBuilder < Gem::TestCase
77
79
  end
78
80
  end
79
81
 
80
- assert_equal "creating Makefile\n", output[1]
81
- assert_contains_make_command '', output[2]
82
+ assert_equal "creating Makefile\n", output[1]
83
+ assert_contains_make_command 'clean', output[2]
82
84
  ensure
83
85
  RbConfig::CONFIG['configure_args'] = configure_args
84
86
  ENV['make'] = env_make
@@ -103,10 +105,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
103
105
  end
104
106
  end
105
107
 
106
- assert_match(/\Aextconf failed:
107
-
108
- #{Gem.ruby} extconf.rb.*
109
- checking for main\(\) in .*?nonexistent/m, error.message)
108
+ assert_equal 'extconf failed, exit code 1', error.message
110
109
 
111
110
  assert_equal("#{Gem.ruby} extconf.rb", output[0])
112
111
  end
@@ -130,6 +129,7 @@ ruby =
130
129
 
131
130
  open 'Makefile', 'w' do |io|
132
131
  io.write <<-Makefile
132
+ clean: ruby
133
133
  all: ruby
134
134
  install: ruby
135
135
 
@@ -147,8 +147,9 @@ end
147
147
  Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
148
148
  end
149
149
 
150
- assert_contains_make_command '', output[2]
151
- assert_contains_make_command 'install', output[4]
150
+ assert_contains_make_command 'clean', output[2]
151
+ assert_contains_make_command '', output[4]
152
+ assert_contains_make_command 'install', output[6]
152
153
  assert_empty Dir.glob(File.join(@ext, 'siteconf*.rb'))
153
154
  end
154
155
 
@@ -163,6 +164,7 @@ end
163
164
  makefile.puts "# π"
164
165
  makefile.puts "RUBYARCHDIR = $(foo)$(target_prefix)"
165
166
  makefile.puts "RUBYLIBDIR = $(bar)$(target_prefix)"
167
+ makefile.puts "clean:"
166
168
  makefile.puts "all:"
167
169
  makefile.puts "install:"
168
170
  end
@@ -171,8 +173,9 @@ end
171
173
  Gem::Ext::ExtConfBuilder.make @ext, output
172
174
  end
173
175
 
174
- assert_contains_make_command '', output[0]
175
- assert_contains_make_command 'install', output[2]
176
+ assert_contains_make_command 'clean', output[0]
177
+ assert_contains_make_command '', output[2]
178
+ assert_contains_make_command 'install', output[4]
176
179
  end
177
180
 
178
181
  def test_class_make_no_Makefile
@@ -182,13 +185,7 @@ end
182
185
  end
183
186
  end
184
187
 
185
- expected = <<-EOF.strip
186
- Makefile not found:
187
-
188
- output
189
- EOF
190
-
191
- assert_equal expected, error.message
188
+ assert_equal 'Makefile not found', error.message
192
189
  end
193
190
 
194
191
  end
@@ -56,9 +56,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
56
56
  end
57
57
  end
58
58
 
59
- assert_match %r%^rake failed:%, error.message
60
- assert_match %r%^#{Regexp.escape @@ruby} mkrf_conf\.rb%, error.message
61
- assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR=#{Regexp.escape @dest_path} RUBYLIBDIR=#{Regexp.escape @dest_path}%, error.message
59
+ assert_match %r%^rake failed%, error.message
62
60
  end
63
61
  end
64
62
 
@@ -15,10 +15,10 @@ class TestGemImpossibleDependenciesError < Gem::TestCase
15
15
  net_ssh_2_6_5 =
16
16
  dependency_request dep('net-ssh', '~> 2.2.2'), 'net-ssh', '2.6.5', request
17
17
 
18
- conflict1 = Gem::DependencyResolver::DependencyConflict.new \
18
+ conflict1 = Gem::Resolver::Conflict.new \
19
19
  net_ssh_2_6_5, net_ssh_2_6_5.requester
20
20
 
21
- conflict2 = Gem::DependencyResolver::DependencyConflict.new \
21
+ conflict2 = Gem::Resolver::Conflict.new \
22
22
  net_ssh_2_2_2, net_ssh_2_2_2.requester
23
23
 
24
24
  conflicts << [net_ssh_2_6_5.requester.spec, conflict1]
@@ -28,10 +28,14 @@ class TestGemImpossibleDependenciesError < Gem::TestCase
28
28
 
29
29
  expected = <<-EXPECTED
30
30
  rye-0.9.8 requires net-ssh (>= 2.0.13) but it conflicted:
31
- Activated net-ssh-2.6.5 instead of (~> 2.2.2) via:
32
- net-ssh-2.6.5, rye-0.9.8
33
- Activated net-ssh-2.2.2 instead of (>= 2.6.5) via:
34
- net-ssh-2.2.2, rye-0.9.8
31
+ Activated net-ssh-2.6.5 via:
32
+ net-ssh-2.6.5 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
33
+ instead of (~> 2.2.2) via:
34
+ net-ssh-2.6.5 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
35
+ Activated net-ssh-2.2.2 via:
36
+ net-ssh-2.2.2 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
37
+ instead of (>= 2.6.5) via:
38
+ net-ssh-2.2.2 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
35
39
  EXPECTED
36
40
 
37
41
  assert_equal expected, error.message
@@ -13,15 +13,15 @@ class TestGemIndexer < Gem::TestCase
13
13
  util_clear_gems
14
14
  util_make_gems
15
15
 
16
- @d2_0 = quick_spec 'd', '2.0' do |s|
16
+ @d2_0 = util_spec 'd', '2.0' do |s|
17
17
  s.date = Gem::Specification::TODAY - 86400 * 3
18
18
  end
19
19
  util_build_gem @d2_0
20
20
 
21
- @d2_0_a = quick_spec 'd', '2.0.a'
21
+ @d2_0_a = util_spec 'd', '2.0.a'
22
22
  util_build_gem @d2_0_a
23
23
 
24
- @d2_0_b = quick_spec 'd', '2.0.b'
24
+ @d2_0_b = util_spec 'd', '2.0.b'
25
25
  util_build_gem @d2_0_b
26
26
 
27
27
  @default = new_default_spec 'default', 2
@@ -292,7 +292,7 @@ class TestGemIndexer < Gem::TestCase
292
292
  def with_system_gems
293
293
  Gem::Specification.reset
294
294
 
295
- sys_gem = quick_spec 'systemgem', '1.0'
295
+ sys_gem = util_spec 'systemgem', '1.0'
296
296
  util_build_gem sys_gem
297
297
  Gem::Specification.add_spec sys_gem
298
298
  yield
@@ -311,11 +311,11 @@ class TestGemIndexer < Gem::TestCase
311
311
  assert File.directory?(quickdir)
312
312
  assert File.directory?(marshal_quickdir)
313
313
 
314
- @d2_1 = quick_spec 'd', '2.1'
314
+ @d2_1 = util_spec 'd', '2.1'
315
315
  util_build_gem @d2_1
316
316
  @d2_1_tuple = [@d2_1.name, @d2_1.version, @d2_1.original_platform]
317
317
 
318
- @d2_1_a = quick_spec 'd', '2.2.a'
318
+ @d2_1_a = util_spec 'd', '2.2.a'
319
319
  util_build_gem @d2_1_a
320
320
  @d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
321
321
 
@@ -185,7 +185,7 @@ gem 'other', version
185
185
  end unless Gem.win_platform?
186
186
 
187
187
  def test_ensure_dependency
188
- quick_spec 'a'
188
+ util_spec 'a'
189
189
 
190
190
  dep = Gem::Dependency.new 'a', '>= 2'
191
191
  assert @installer.ensure_dependency(@spec, dep)
@@ -606,7 +606,7 @@ gem 'other', version
606
606
  end
607
607
 
608
608
  def test_initialize
609
- spec = quick_spec 'a' do |s| s.platform = Gem::Platform.new 'mswin32' end
609
+ spec = util_spec 'a' do |s| s.platform = Gem::Platform.new 'mswin32' end
610
610
  gem = File.join @tempdir, spec.file_name
611
611
 
612
612
  Dir.mkdir util_inst_bindir
@@ -645,9 +645,11 @@ gem 'other', version
645
645
  cache_file = File.join @gemhome, 'cache', @spec.file_name
646
646
  stub_exe = File.join @gemhome, 'bin', 'executable'
647
647
  rakefile = File.join gemdir, 'ext', 'a', 'Rakefile'
648
+ spec_file = File.join @gemhome, 'specifications', @spec.spec_name
648
649
 
649
650
  Gem.pre_install do |installer|
650
651
  refute_path_exists cache_file, 'cache file must not exist yet'
652
+ refute_path_exists spec_file, 'spec file must not exist yet'
651
653
  true
652
654
  end
653
655
 
@@ -655,11 +657,13 @@ gem 'other', version
655
657
  assert_path_exists gemdir, 'gem install dir must exist'
656
658
  assert_path_exists rakefile, 'gem executable must exist'
657
659
  refute_path_exists stub_exe, 'gem executable must not exist'
660
+ refute_path_exists spec_file, 'spec file must not exist yet'
658
661
  true
659
662
  end
660
663
 
661
664
  Gem.post_install do |installer|
662
665
  assert_path_exists cache_file, 'cache file must exist'
666
+ assert_path_exists spec_file, 'spec file must exist'
663
667
  end
664
668
 
665
669
  @newspec = nil
@@ -937,7 +941,7 @@ gem 'other', version
937
941
  assert_match %r|I am a shiny gem!|, @ui.output
938
942
  end
939
943
 
940
- def test_install_extension_install_dir
944
+ def test_install_extension_dir
941
945
  gemhome2 = "#{@gemhome}2"
942
946
 
943
947
  @spec.extensions << "extconf.rb"
@@ -1004,6 +1008,10 @@ gem 'other', version
1004
1008
  skip '1.9.2 and earlier mkmf.rb does not create TOUCH' if
1005
1009
  RUBY_VERSION < '1.9.3'
1006
1010
 
1011
+ if RUBY_VERSION == "1.9.3" and RUBY_PATCHLEVEL <= 194
1012
+ skip "TOUCH was introduced into 1.9.3 after p194"
1013
+ end
1014
+
1007
1015
  @spec.require_paths = ["."]
1008
1016
 
1009
1017
  @spec.extensions << "extconf.rb"
@@ -1038,13 +1046,19 @@ gem 'other', version
1038
1046
  puts '-' * 78
1039
1047
  puts File.read File.join(@gemhome, 'gems', 'a-2', 'Makefile')
1040
1048
  puts '-' * 78
1041
- puts File.read File.join(@gemhome, 'gems', 'a-2', 'gem_make.out')
1042
- puts '-' * 78
1049
+
1050
+ path = File.join(@gemhome, 'gems', 'a-2', 'gem_make.out')
1051
+
1052
+ if File.exists?(path)
1053
+ puts File.read(path)
1054
+ puts '-' * 78
1055
+ end
1056
+
1043
1057
  raise
1044
1058
  end
1045
1059
 
1046
1060
  def test_installation_satisfies_dependency_eh
1047
- quick_spec 'a'
1061
+ util_spec 'a'
1048
1062
 
1049
1063
  dep = Gem::Dependency.new 'a', '>= 2'
1050
1064
  assert @installer.installation_satisfies_dependency?(dep)
@@ -1113,7 +1127,7 @@ gem 'other', version
1113
1127
  end
1114
1128
 
1115
1129
  def test_pre_install_checks_wrong_rubygems_version
1116
- spec = quick_spec 'old_rubygems_required', '1' do |s|
1130
+ spec = util_spec 'old_rubygems_required', '1' do |s|
1117
1131
  s.required_rubygems_version = '< 0'
1118
1132
  end
1119
1133
 
@@ -1346,7 +1360,12 @@ gem 'other', version
1346
1360
  @installer.write_spec
1347
1361
 
1348
1362
  assert_path_exists @spec.spec_file
1349
- assert_equal @spec, eval(File.read(@spec.spec_file))
1363
+
1364
+ loaded = Gem::Specification.load @spec.spec_file
1365
+
1366
+ assert_equal @spec, loaded
1367
+
1368
+ assert_equal Gem.rubygems_version, @spec.installed_by_version
1350
1369
  end
1351
1370
 
1352
1371
  def test_write_spec_writes_cached_spec
@@ -1395,7 +1414,7 @@ gem 'other', version
1395
1414
  end
1396
1415
 
1397
1416
  def old_ruby_required
1398
- spec = quick_spec 'old_ruby_required', '1' do |s|
1417
+ spec = util_spec 'old_ruby_required', '1' do |s|
1399
1418
  s.required_ruby_version = '= 1.4.6'
1400
1419
  end
1401
1420
 
@@ -1405,7 +1424,7 @@ gem 'other', version
1405
1424
  end
1406
1425
 
1407
1426
  def util_execless
1408
- @spec = quick_spec 'z'
1427
+ @spec = util_spec 'z'
1409
1428
  util_build_gem @spec
1410
1429
 
1411
1430
  @installer = util_installer @spec, @gemhome
@@ -40,7 +40,7 @@ class TestGemLocalRemoteOptions < Gem::TestCase
40
40
  end
41
41
 
42
42
  def test_clear_sources_option_idiot_proof
43
- util_setup_fake_fetcher
43
+ spec_fetcher
44
44
 
45
45
  @cmd.add_local_remote_options
46
46
  @cmd.handle_options %W[--clear-sources]
@@ -396,6 +396,24 @@ class TestGemPackage < Gem::Package::TarTestCase
396
396
  "#{@destination} is not allowed", e.message)
397
397
  end
398
398
 
399
+ def test_extract_tar_gz_directory
400
+ package = Gem::Package.new @gem
401
+
402
+ tgz_io = util_tar_gz do |tar|
403
+ tar.mkdir 'lib', 0755
404
+ tar.add_file 'lib/foo.rb', 0644 do |io| io.write 'hi' end
405
+ tar.mkdir 'lib/foo', 0755
406
+ end
407
+
408
+ package.extract_tar_gz tgz_io, @destination
409
+
410
+ extracted = File.join @destination, 'lib/foo.rb'
411
+ assert_path_exists extracted
412
+
413
+ extracted = File.join @destination, 'lib/foo'
414
+ assert_path_exists extracted
415
+ end
416
+
399
417
  def test_extract_tar_gz_dot_slash
400
418
  package = Gem::Package.new @gem
401
419
 
@@ -9,7 +9,7 @@ class TestGemRDoc < Gem::TestCase
9
9
  def setup
10
10
  super
11
11
 
12
- @a = quick_spec 'a' do |s|
12
+ @a = util_spec 'a' do |s|
13
13
  s.rdoc_options = %w[--main MyTitle]
14
14
  s.extra_rdoc_files = %w[README]
15
15
  end
@@ -165,7 +165,7 @@ gems:
165
165
  def test_api_endpoint
166
166
  uri = URI.parse "http://gems.example.com/foo"
167
167
  target = MiniTest::Mock.new
168
- target.expect :target, "http://blah.com"
168
+ target.expect :target, "blah.com"
169
169
 
170
170
  dns = MiniTest::Mock.new
171
171
  dns.expect :getresource, target, [String, Object]
@@ -12,8 +12,9 @@ class TestGemRequest < Gem::TestCase
12
12
  super
13
13
 
14
14
  @proxy_uri = "http://localhost:1234"
15
+ @uri = URI('http://example')
15
16
 
16
- @request = Gem::Request.new nil, nil, nil, nil
17
+ @request = Gem::Request.new @uri, nil, nil, nil
17
18
  end
18
19
 
19
20
  def teardown
@@ -25,7 +26,7 @@ class TestGemRequest < Gem::TestCase
25
26
  def test_initialize_proxy
26
27
  proxy_uri = 'http://proxy.example.com'
27
28
 
28
- request = Gem::Request.new nil, nil, nil, proxy_uri
29
+ request = Gem::Request.new @uri, nil, nil, proxy_uri
29
30
 
30
31
  assert_equal proxy_uri, request.proxy_uri.to_s
31
32
  end
@@ -33,7 +34,7 @@ class TestGemRequest < Gem::TestCase
33
34
  def test_initialize_proxy_URI
34
35
  proxy_uri = 'http://proxy.example.com'
35
36
 
36
- request = Gem::Request.new nil, nil, nil, URI(proxy_uri)
37
+ request = Gem::Request.new @uri, nil, nil, URI(proxy_uri)
37
38
 
38
39
  assert_equal proxy_uri, request.proxy_uri.to_s
39
40
  end
@@ -43,7 +44,7 @@ class TestGemRequest < Gem::TestCase
43
44
  ENV['http_proxy_user'] = 'foo'
44
45
  ENV['http_proxy_pass'] = 'bar'
45
46
 
46
- request = Gem::Request.new nil, nil, nil, nil
47
+ request = Gem::Request.new @uri, nil, nil, nil
47
48
 
48
49
  proxy = request.proxy_uri
49
50
 
@@ -51,6 +52,32 @@ class TestGemRequest < Gem::TestCase
51
52
  assert_equal 'bar', proxy.password
52
53
  end
53
54
 
55
+ def test_initialize_proxy_ENV_https
56
+ ENV['https_proxy'] = @proxy_uri
57
+
58
+ request = Gem::Request.new URI('https://example'), nil, nil, nil
59
+
60
+ proxy = request.proxy_uri
61
+
62
+ assert_equal URI(@proxy_uri), proxy
63
+ end
64
+
65
+ def test_get_proxy_from_env_fallback
66
+ ENV['http_proxy'] = @proxy_uri
67
+
68
+ proxy = @request.get_proxy_from_env 'https'
69
+
70
+ assert_equal URI(@proxy_uri), proxy
71
+ end
72
+
73
+ def test_get_proxy_from_env_https
74
+ ENV['https_proxy'] = @proxy_uri
75
+
76
+ proxy = @request.get_proxy_from_env 'https'
77
+
78
+ assert_equal URI(@proxy_uri), proxy
79
+ end
80
+
54
81
  def test_get_proxy_from_env_domain
55
82
  ENV['http_proxy'] = @proxy_uri
56
83
  ENV['http_proxy_user'] = 'foo\user'
@@ -125,7 +152,7 @@ class TestGemRequest < Gem::TestCase
125
152
  end
126
153
 
127
154
  def test_user_agent
128
- ua = Gem::Request.new(nil, nil, nil, nil).user_agent
155
+ ua = Gem::Request.new(@uri, nil, nil, nil).user_agent
129
156
 
130
157
  assert_match %r%^RubyGems/\S+ \S+ Ruby/\S+ \(.*?\)%, ua
131
158
  assert_match %r%RubyGems/#{Regexp.escape Gem::VERSION}%, ua
@@ -140,7 +167,7 @@ class TestGemRequest < Gem::TestCase
140
167
  Object.send :remove_const, :RUBY_ENGINE if defined?(RUBY_ENGINE)
141
168
  Object.send :const_set, :RUBY_ENGINE, 'vroom'
142
169
 
143
- ua = Gem::Request.new(nil, nil, nil, nil).user_agent
170
+ ua = Gem::Request.new(@uri, nil, nil, nil).user_agent
144
171
 
145
172
  assert_match %r%\) vroom%, ua
146
173
  ensure
@@ -153,7 +180,7 @@ class TestGemRequest < Gem::TestCase
153
180
  Object.send :remove_const, :RUBY_ENGINE if defined?(RUBY_ENGINE)
154
181
  Object.send :const_set, :RUBY_ENGINE, 'ruby'
155
182
 
156
- ua = Gem::Request.new(nil, nil, nil, nil).user_agent
183
+ ua = Gem::Request.new(@uri, nil, nil, nil).user_agent
157
184
 
158
185
  assert_match %r%\)%, ua
159
186
  ensure
@@ -166,7 +193,7 @@ class TestGemRequest < Gem::TestCase
166
193
  Object.send :remove_const, :RUBY_PATCHLEVEL
167
194
  Object.send :const_set, :RUBY_PATCHLEVEL, 5
168
195
 
169
- ua = Gem::Request.new(nil, nil, nil, nil).user_agent
196
+ ua = Gem::Request.new(@uri, nil, nil, nil).user_agent
170
197
 
171
198
  assert_match %r% patchlevel 5\)%, ua
172
199
  ensure
@@ -181,7 +208,7 @@ class TestGemRequest < Gem::TestCase
181
208
  Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION)
182
209
  Object.send :const_set, :RUBY_REVISION, 6
183
210
 
184
- ua = Gem::Request.new(nil, nil, nil, nil).user_agent
211
+ ua = Gem::Request.new(@uri, nil, nil, nil).user_agent
185
212
 
186
213
  assert_match %r% revision 6\)%, ua
187
214
  assert_match %r%Ruby/#{Regexp.escape RUBY_VERSION}dev%, ua
@@ -196,7 +223,7 @@ class TestGemRequest < Gem::TestCase
196
223
  Object.send :const_set, :RUBY_PATCHLEVEL, -1
197
224
  Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION)
198
225
 
199
- ua = Gem::Request.new(nil, nil, nil, nil).user_agent
226
+ ua = Gem::Request.new(@uri, nil, nil, nil).user_agent
200
227
 
201
228
  assert_match %r%\(#{Regexp.escape RUBY_RELEASE_DATE}\)%, ua
202
229
  ensure