rubygems-update 3.2.0.rc.2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +54 -51
  3. data/Manifest.txt +32 -29
  4. data/Rakefile +3 -1
  5. data/bundler/CHANGELOG.md +35 -1
  6. data/bundler/UPGRADING.md +1 -1
  7. data/bundler/lib/bundler.rb +4 -0
  8. data/bundler/lib/bundler/build_metadata.rb +2 -2
  9. data/bundler/lib/bundler/cli.rb +5 -2
  10. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  11. data/bundler/lib/bundler/cli/exec.rb +3 -3
  12. data/bundler/lib/bundler/cli/outdated.rb +2 -4
  13. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
  14. data/bundler/lib/bundler/definition.rb +4 -9
  15. data/bundler/lib/bundler/env.rb +1 -1
  16. data/bundler/lib/bundler/feature_flag.rb +0 -1
  17. data/bundler/lib/bundler/fetcher/index.rb +2 -3
  18. data/bundler/lib/bundler/friendly_errors.rb +15 -0
  19. data/bundler/lib/bundler/index.rb +5 -1
  20. data/bundler/lib/bundler/injector.rb +9 -2
  21. data/bundler/lib/bundler/installer.rb +7 -5
  22. data/bundler/lib/bundler/lazy_specification.rb +5 -7
  23. data/bundler/lib/bundler/man/.document +1 -0
  24. data/bundler/{man → lib/bundler/man}/bundle-add.1.ronn +0 -0
  25. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1.ronn +0 -0
  26. data/bundler/{man → lib/bundler/man}/bundle-cache.1.ronn +0 -0
  27. data/bundler/{man → lib/bundler/man}/bundle-check.1.ronn +0 -0
  28. data/bundler/{man → lib/bundler/man}/bundle-clean.1.ronn +0 -0
  29. data/bundler/{man → lib/bundler/man}/bundle-config.1.ronn +1 -9
  30. data/bundler/{man → lib/bundler/man}/bundle-doctor.1.ronn +0 -0
  31. data/bundler/{man → lib/bundler/man}/bundle-exec.1.ronn +0 -0
  32. data/bundler/{man → lib/bundler/man}/bundle-gem.1.ronn +0 -0
  33. data/bundler/{man → lib/bundler/man}/bundle-info.1.ronn +0 -0
  34. data/bundler/{man → lib/bundler/man}/bundle-init.1.ronn +0 -0
  35. data/bundler/{man → lib/bundler/man}/bundle-inject.1.ronn +0 -0
  36. data/bundler/{man → lib/bundler/man}/bundle-install.1.ronn +1 -1
  37. data/bundler/{man → lib/bundler/man}/bundle-list.1.ronn +0 -0
  38. data/bundler/{man → lib/bundler/man}/bundle-lock.1.ronn +0 -0
  39. data/bundler/{man → lib/bundler/man}/bundle-open.1.ronn +0 -0
  40. data/bundler/{man → lib/bundler/man}/bundle-outdated.1.ronn +0 -0
  41. data/bundler/{man → lib/bundler/man}/bundle-platform.1.ronn +0 -0
  42. data/bundler/{man → lib/bundler/man}/bundle-pristine.1.ronn +0 -0
  43. data/bundler/{man → lib/bundler/man}/bundle-remove.1.ronn +0 -0
  44. data/bundler/{man → lib/bundler/man}/bundle-show.1.ronn +0 -0
  45. data/bundler/{man → lib/bundler/man}/bundle-update.1.ronn +0 -0
  46. data/bundler/{man → lib/bundler/man}/bundle-viz.1.ronn +0 -0
  47. data/bundler/{man → lib/bundler/man}/bundle.1.ronn +0 -0
  48. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +0 -0
  49. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  50. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  51. data/bundler/lib/bundler/resolver.rb +2 -3
  52. data/bundler/lib/bundler/rubygems_integration.rb +4 -0
  53. data/bundler/lib/bundler/settings.rb +0 -1
  54. data/bundler/lib/bundler/source/git/git_proxy.rb +1 -1
  55. data/bundler/lib/bundler/spec_set.rb +1 -0
  56. data/bundler/lib/bundler/templates/newgem/README.md.tt +0 -1
  57. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -2
  58. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -0
  59. data/bundler/lib/bundler/uri_credentials_filter.rb +2 -0
  60. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  61. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  62. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  63. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  64. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  65. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
  66. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +4 -7
  67. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  68. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  69. data/bundler/lib/bundler/version.rb +1 -1
  70. data/bundler/man/bundle-add.1 +1 -1
  71. data/bundler/man/bundle-binstubs.1 +1 -1
  72. data/bundler/man/bundle-cache.1 +1 -1
  73. data/bundler/man/bundle-check.1 +1 -1
  74. data/bundler/man/bundle-clean.1 +1 -1
  75. data/bundler/man/bundle-config.1 +2 -5
  76. data/bundler/man/bundle-doctor.1 +1 -1
  77. data/bundler/man/bundle-exec.1 +1 -1
  78. data/bundler/man/bundle-gem.1 +1 -1
  79. data/bundler/man/bundle-info.1 +1 -1
  80. data/bundler/man/bundle-init.1 +1 -1
  81. data/bundler/man/bundle-inject.1 +1 -1
  82. data/bundler/man/bundle-install.1 +2 -2
  83. data/bundler/man/bundle-list.1 +1 -1
  84. data/bundler/man/bundle-lock.1 +1 -1
  85. data/bundler/man/bundle-open.1 +1 -1
  86. data/bundler/man/bundle-outdated.1 +1 -1
  87. data/bundler/man/bundle-platform.1 +1 -1
  88. data/bundler/man/bundle-pristine.1 +1 -1
  89. data/bundler/man/bundle-remove.1 +1 -1
  90. data/bundler/man/bundle-show.1 +1 -1
  91. data/bundler/man/bundle-update.1 +1 -1
  92. data/bundler/man/bundle-viz.1 +1 -1
  93. data/bundler/man/bundle.1 +1 -1
  94. data/bundler/man/gemfile.5 +1 -1
  95. data/bundler/man/index.txt +25 -0
  96. data/lib/rubygems.rb +6 -2
  97. data/lib/rubygems/available_set.rb +1 -1
  98. data/lib/rubygems/command_manager.rb +2 -2
  99. data/lib/rubygems/commands/build_command.rb +37 -20
  100. data/lib/rubygems/commands/cert_command.rb +1 -1
  101. data/lib/rubygems/commands/help_command.rb +2 -0
  102. data/lib/rubygems/commands/owner_command.rb +10 -2
  103. data/lib/rubygems/commands/pristine_command.rb +1 -1
  104. data/lib/rubygems/commands/push_command.rb +7 -3
  105. data/lib/rubygems/commands/query_command.rb +17 -0
  106. data/lib/rubygems/commands/server_command.rb +4 -0
  107. data/lib/rubygems/commands/setup_command.rb +25 -45
  108. data/lib/rubygems/commands/sources_command.rb +6 -2
  109. data/lib/rubygems/commands/specification_command.rb +6 -0
  110. data/lib/rubygems/commands/yank_command.rb +4 -4
  111. data/lib/rubygems/core_ext/kernel_require.rb +3 -0
  112. data/lib/rubygems/core_ext/kernel_warn.rb +6 -7
  113. data/lib/rubygems/defaults.rb +2 -2
  114. data/lib/rubygems/dependency.rb +1 -1
  115. data/lib/rubygems/dependency_installer.rb +4 -3
  116. data/lib/rubygems/ext/builder.rb +13 -32
  117. data/lib/rubygems/ext/cmake_builder.rb +4 -4
  118. data/lib/rubygems/ext/configure_builder.rb +4 -4
  119. data/lib/rubygems/ext/ext_conf_builder.rb +19 -14
  120. data/lib/rubygems/ext/rake_builder.rb +3 -3
  121. data/lib/rubygems/gemcutter_utilities.rb +90 -14
  122. data/lib/rubygems/indexer.rb +0 -1
  123. data/lib/rubygems/install_update_options.rb +2 -2
  124. data/lib/rubygems/installer.rb +12 -9
  125. data/lib/rubygems/installer_test_case.rb +7 -6
  126. data/lib/rubygems/name_tuple.rb +1 -1
  127. data/lib/rubygems/openssl.rb +4 -4
  128. data/lib/rubygems/package.rb +3 -2
  129. data/lib/rubygems/package/tar_header.rb +1 -1
  130. data/lib/rubygems/package/tar_test_case.rb +1 -1
  131. data/lib/rubygems/platform.rb +18 -7
  132. data/lib/rubygems/query_utils.rb +0 -9
  133. data/lib/rubygems/remote_fetcher.rb +1 -2
  134. data/lib/rubygems/request.rb +4 -3
  135. data/lib/rubygems/request_set/gem_dependency_api.rb +4 -4
  136. data/lib/rubygems/requirement.rb +1 -1
  137. data/lib/rubygems/resolver.rb +1 -1
  138. data/lib/rubygems/resolver/activation_request.rb +9 -1
  139. data/lib/rubygems/resolver/api_specification.rb +5 -1
  140. data/lib/rubygems/resolver/conflict.rb +1 -1
  141. data/lib/rubygems/resolver/dependency_request.rb +1 -1
  142. data/lib/rubygems/resolver/index_specification.rb +11 -0
  143. data/lib/rubygems/resolver/installer_set.rb +1 -2
  144. data/lib/rubygems/resolver/lock_set.rb +1 -1
  145. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  146. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  147. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  148. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  149. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  150. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  151. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  152. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  153. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  154. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  155. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  156. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  157. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  158. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  159. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  160. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  161. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  162. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  163. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  164. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  165. data/lib/rubygems/resolver/specification.rb +1 -1
  166. data/lib/rubygems/s3_uri_signer.rb +1 -1
  167. data/lib/rubygems/security.rb +1 -2
  168. data/lib/rubygems/security/policy.rb +1 -1
  169. data/lib/rubygems/security/signer.rb +1 -1
  170. data/lib/rubygems/server.rb +1 -1
  171. data/lib/rubygems/source.rb +10 -4
  172. data/lib/rubygems/spec_fetcher.rb +1 -1
  173. data/lib/rubygems/specification.rb +8 -8
  174. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  175. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  176. data/lib/rubygems/stub_specification.rb +1 -1
  177. data/lib/rubygems/test_case.rb +13 -26
  178. data/lib/rubygems/uri_formatter.rb +2 -1
  179. data/lib/rubygems/version_option.rb +6 -0
  180. data/rubygems-update.gemspec +1 -1
  181. data/test/rubygems/test_bundled_ca.rb +9 -5
  182. data/test/rubygems/test_gem.rb +3 -3
  183. data/test/rubygems/test_gem_commands_build_command.rb +197 -5
  184. data/test/rubygems/test_gem_commands_cert_command.rb +2 -2
  185. data/test/rubygems/test_gem_commands_cleanup_command.rb +1 -1
  186. data/test/rubygems/test_gem_commands_contents_command.rb +2 -2
  187. data/test/rubygems/test_gem_commands_help_command.rb +15 -2
  188. data/test/rubygems/test_gem_commands_install_command.rb +1 -1
  189. data/test/rubygems/test_gem_commands_owner_command.rb +49 -1
  190. data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
  191. data/test/rubygems/test_gem_commands_push_command.rb +31 -5
  192. data/test/rubygems/test_gem_commands_query_command.rb +3 -3
  193. data/test/rubygems/test_gem_commands_setup_command.rb +13 -18
  194. data/test/rubygems/test_gem_commands_signin_command.rb +27 -3
  195. data/test/rubygems/test_gem_commands_sources_command.rb +60 -0
  196. data/test/rubygems/test_gem_commands_specification_command.rb +28 -0
  197. data/test/rubygems/test_gem_commands_update_command.rb +2 -2
  198. data/test/rubygems/test_gem_commands_yank_command.rb +31 -1
  199. data/test/rubygems/test_gem_dependency_installer.rb +36 -2
  200. data/test/rubygems/test_gem_dependency_list.rb +2 -2
  201. data/test/rubygems/test_gem_ext_builder.rb +10 -14
  202. data/test/rubygems/test_gem_ext_cmake_builder.rb +3 -9
  203. data/test/rubygems/test_gem_ext_configure_builder.rb +3 -9
  204. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -26
  205. data/test/rubygems/test_gem_ext_rake_builder.rb +5 -13
  206. data/test/rubygems/test_gem_gem_runner.rb +5 -4
  207. data/test/rubygems/test_gem_gemcutter_utilities.rb +3 -3
  208. data/test/rubygems/test_gem_install_update_options.rb +15 -3
  209. data/test/rubygems/test_gem_installer.rb +74 -11
  210. data/test/rubygems/test_gem_package.rb +8 -8
  211. data/test/rubygems/test_gem_package_old.rb +4 -4
  212. data/test/rubygems/test_gem_package_tar_writer.rb +1 -1
  213. data/test/rubygems/test_gem_platform.rb +63 -4
  214. data/test/rubygems/test_gem_remote_fetcher.rb +14 -18
  215. data/test/rubygems/test_gem_request.rb +2 -2
  216. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -4
  217. data/test/rubygems/test_gem_resolver_api_set.rb +8 -8
  218. data/test/rubygems/test_gem_resolver_conflict.rb +1 -1
  219. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -1
  220. data/test/rubygems/test_gem_security.rb +2 -2
  221. data/test/rubygems/test_gem_security_policy.rb +2 -2
  222. data/test/rubygems/test_gem_security_signer.rb +2 -2
  223. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  224. data/test/rubygems/test_gem_source.rb +5 -0
  225. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  226. data/test/rubygems/test_gem_specification.rb +5 -4
  227. data/test/rubygems/test_gem_uninstaller.rb +7 -7
  228. data/test/rubygems/test_gem_validator.rb +1 -1
  229. data/test/rubygems/test_gem_version_option.rb +1 -1
  230. data/test/rubygems/test_require.rb +50 -9
  231. metadata +35 -32
  232. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  233. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  234. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
@@ -36,9 +36,7 @@ install (FILES test.txt DESTINATION bin)
36
36
 
37
37
  output = []
38
38
 
39
- Dir.chdir @ext do
40
- Gem::Ext::CmakeBuilder.build nil, @dest_path, output
41
- end
39
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
42
40
 
43
41
  output = output.join "\n"
44
42
 
@@ -54,9 +52,7 @@ install (FILES test.txt DESTINATION bin)
54
52
  output = []
55
53
 
56
54
  error = assert_raises Gem::InstallError do
57
- Dir.chdir @ext do
58
- Gem::Ext::CmakeBuilder.build nil, @dest_path, output
59
- end
55
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
60
56
  end
61
57
 
62
58
  output = output.join "\n"
@@ -77,9 +73,7 @@ install (FILES test.txt DESTINATION bin)
77
73
 
78
74
  output = []
79
75
 
80
- Dir.chdir @ext do
81
- Gem::Ext::CmakeBuilder.build nil, @dest_path, output
82
- end
76
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
83
77
 
84
78
  output = output.join "\n"
85
79
 
@@ -25,9 +25,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
25
25
 
26
26
  output = []
27
27
 
28
- Dir.chdir @ext do
29
- Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
30
- end
28
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
31
29
 
32
30
  assert_match(/^current directory:/, output.shift)
33
31
  assert_equal "sh ./configure --prefix=#{@dest_path}", output.shift
@@ -48,9 +46,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
48
46
  output = []
49
47
 
50
48
  error = assert_raises Gem::InstallError do
51
- Dir.chdir @ext do
52
- Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
53
- end
49
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
54
50
  end
55
51
 
56
52
  shell_error_msg = %r{(\./configure: .*)|((?:[Cc]an't|cannot) open '?\./configure'?(?:: No such file or directory)?)}
@@ -74,9 +70,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
74
70
  end
75
71
 
76
72
  output = []
77
- Dir.chdir @ext do
78
- Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
79
- end
73
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
80
74
 
81
75
  assert_contains_make_command 'clean', output[1]
82
76
  assert_contains_make_command '', output[4]
@@ -29,12 +29,9 @@ class TestGemExtExtConfBuilder < Gem::TestCase
29
29
 
30
30
  output = []
31
31
 
32
- Dir.chdir @ext do
33
- result =
34
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
32
+ result = Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
35
33
 
36
- assert_same result, output
37
- end
34
+ assert_same result, output
38
35
 
39
36
  assert_match(/^current directory:/, output[0])
40
37
  assert_match(/^#{Gem.ruby}.* extconf.rb/, output[1])
@@ -59,9 +56,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
59
56
 
60
57
  output = []
61
58
 
62
- Dir.chdir @ext do
63
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
64
- end
59
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
65
60
 
66
61
  assert_equal "creating Makefile\n", output[2]
67
62
  assert_contains_make_command 'clean', output[4]
@@ -86,9 +81,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
86
81
  output = []
87
82
 
88
83
  assert_raises Gem::InstallError do
89
- Dir.chdir @ext do
90
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
91
- end
84
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
92
85
  end
93
86
 
94
87
  assert_equal "creating Makefile\n", output[2]
@@ -112,9 +105,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
112
105
  output = []
113
106
 
114
107
  error = assert_raises Gem::InstallError do
115
- Dir.chdir @ext do
116
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
117
- end
108
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
118
109
  end
119
110
 
120
111
  assert_equal 'extconf failed, exit code 1', error.message
@@ -139,9 +130,7 @@ class TestGemExtExtConfBuilder < Gem::TestCase
139
130
 
140
131
  output = []
141
132
 
142
- Dir.chdir @ext do
143
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
144
- end
133
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
145
134
 
146
135
  refute_includes(output, "To see why this extension failed to compile, please check the mkmf.log which can be found here:\n")
147
136
 
@@ -181,9 +170,7 @@ end
181
170
 
182
171
  output = []
183
172
 
184
- Dir.chdir @ext do
185
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output
186
- end
173
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', @dest_path, output, [], nil, @ext
187
174
 
188
175
  assert_contains_make_command 'clean', output[4]
189
176
  assert_contains_make_command '', output[7]
@@ -207,9 +194,7 @@ end
207
194
  makefile.puts "install:"
208
195
  end
209
196
 
210
- Dir.chdir @ext do
211
- Gem::Ext::ExtConfBuilder.make @ext, output
212
- end
197
+ Gem::Ext::ExtConfBuilder.make @ext, output, @ext
213
198
 
214
199
  assert_contains_make_command 'clean', output[1]
215
200
  assert_contains_make_command '', output[4]
@@ -218,9 +203,7 @@ end
218
203
 
219
204
  def test_class_make_no_Makefile
220
205
  error = assert_raises Gem::InstallError do
221
- Dir.chdir @ext do
222
- Gem::Ext::ExtConfBuilder.make @ext, ['output']
223
- end
206
+ Gem::Ext::ExtConfBuilder.make @ext, ['output'], @ext
224
207
  end
225
208
 
226
209
  assert_equal 'Makefile not found', error.message
@@ -18,9 +18,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
18
18
  output = []
19
19
 
20
20
  build_rake_in do |rake|
21
- Dir.chdir @ext do
22
- Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output
23
- end
21
+ Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, [], nil, @ext
24
22
 
25
23
  output = output.join "\n"
26
24
 
@@ -38,10 +36,8 @@ class TestGemExtRakeBuilder < Gem::TestCase
38
36
  output = []
39
37
 
40
38
  build_rake_in do |rake|
41
- Dir.chdir @ext do
42
- non_empty_args_list = ['']
43
- Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, non_empty_args_list
44
- end
39
+ non_empty_args_list = ['']
40
+ Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, non_empty_args_list, nil, @ext
45
41
 
46
42
  output = output.join "\n"
47
43
 
@@ -55,9 +51,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
55
51
  output = []
56
52
 
57
53
  build_rake_in do |rake|
58
- Dir.chdir @ext do
59
- Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"]
60
- end
54
+ Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"], nil, @ext
61
55
 
62
56
  output = output.join "\n"
63
57
 
@@ -72,9 +66,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
72
66
 
73
67
  build_rake_in(false) do |rake|
74
68
  error = assert_raises Gem::InstallError do
75
- Dir.chdir @ext do
76
- Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output
77
- end
69
+ Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output, [], nil, @ext
78
70
  end
79
71
 
80
72
  assert_match %r{^rake failed}, error.message
@@ -74,17 +74,18 @@ class TestGemGemRunner < Gem::TestCase
74
74
  args = %w[query]
75
75
 
76
76
  use_ui @ui do
77
- assert_nil @runner.run(args)
77
+ @runner.run(args)
78
78
  end
79
79
 
80
80
  assert_match(/WARNING: query command is deprecated. It will be removed in Rubygems [0-9]+/, @ui.error)
81
+ assert_match(/WARNING: It is recommended that you use `gem search` or `gem list` instead/, @ui.error)
81
82
  end
82
83
 
83
84
  def test_info_succeeds
84
85
  args = %w[info]
85
86
 
86
87
  use_ui @ui do
87
- assert_nil @runner.run(args)
88
+ @runner.run(args)
88
89
  end
89
90
 
90
91
  assert_empty @ui.error
@@ -94,7 +95,7 @@ class TestGemGemRunner < Gem::TestCase
94
95
  args = %w[list]
95
96
 
96
97
  use_ui @ui do
97
- assert_nil @runner.run(args)
98
+ @runner.run(args)
98
99
  end
99
100
 
100
101
  assert_empty @ui.error
@@ -104,7 +105,7 @@ class TestGemGemRunner < Gem::TestCase
104
105
  args = %w[search]
105
106
 
106
107
  use_ui @ui do
107
- assert_nil @runner.run(args)
108
+ @runner.run(args)
108
109
  end
109
110
 
110
111
  assert_empty @ui.error
@@ -32,7 +32,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
32
32
  def test_alternate_key_alternate_host
33
33
  keys = {
34
34
  :rubygems_api_key => 'KEY',
35
- "http://rubygems.engineyard.com" => "EYKEY"
35
+ "http://rubygems.engineyard.com" => "EYKEY",
36
36
  }
37
37
 
38
38
  FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
@@ -202,7 +202,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
202
202
 
203
203
  assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @sign_in_ui.output
204
204
  assert_match 'Code: ', @sign_in_ui.output
205
- assert_match 'Signed in.', @sign_in_ui.output
205
+ assert_match 'Signed in with API key:', @sign_in_ui.output
206
206
  assert_equal '111111', @fetcher.last_request['OTP']
207
207
  end
208
208
 
@@ -233,7 +233,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
233
233
  @fetcher.data["#{host}/api/v1/api_key"] = response
234
234
  Gem::RemoteFetcher.fetcher = @fetcher
235
235
 
236
- @sign_in_ui = Gem::MockGemUi.new("#{email}\n#{password}\n" + extra_input)
236
+ @sign_in_ui = Gem::MockGemUi.new("#{email}\n#{password}\n\n\n\n\n\n\n\n\n" + extra_input)
237
237
 
238
238
  use_ui @sign_in_ui do
239
239
  if args.length > 0
@@ -30,7 +30,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
30
30
 
31
31
  args.concat %w[--vendor] unless Gem.java_platform?
32
32
 
33
- args.concat %w[-P HighSecurity] if defined?(OpenSSL::SSL)
33
+ args.concat %w[-P HighSecurity] if Gem::HAVE_OPENSSL
34
34
 
35
35
  assert @cmd.handles?(args)
36
36
  end
@@ -92,7 +92,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
92
92
  end
93
93
 
94
94
  def test_security_policy
95
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
95
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
96
96
 
97
97
  @cmd.handle_options %w[-P HighSecurity]
98
98
 
@@ -100,7 +100,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
100
100
  end
101
101
 
102
102
  def test_security_policy_unknown
103
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
103
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
104
104
 
105
105
  @cmd.add_install_update_options
106
106
 
@@ -192,4 +192,16 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
192
192
 
193
193
  assert_equal true, @cmd.options[:post_install_message]
194
194
  end
195
+
196
+ def test_minimal_deps_no
197
+ @cmd.handle_options %w[--no-minimal-deps]
198
+
199
+ assert_equal false, @cmd.options[:minimal_deps]
200
+ end
201
+
202
+ def test_minimal_deps
203
+ @cmd.handle_options %w[--minimal-deps]
204
+
205
+ assert_equal true, @cmd.options[:minimal_deps]
206
+ end
195
207
  end
@@ -83,7 +83,7 @@ end
83
83
  end
84
84
 
85
85
  def test_check_executable_overwrite_default_bin_dir
86
- installer = setup_base_installer
86
+ installer = setup_base_installer(false)
87
87
 
88
88
  bindir(Gem.bindir) do
89
89
  util_conflict_executable false
@@ -143,7 +143,7 @@ gem 'other', version
143
143
  end
144
144
 
145
145
  def test_check_executable_overwrite_other_gem
146
- installer = setup_base_installer
146
+ installer = setup_base_installer(false)
147
147
 
148
148
  util_conflict_executable true
149
149
 
@@ -287,7 +287,7 @@ gem 'other', version
287
287
  end
288
288
 
289
289
  def test_ensure_loadable_spec_security_policy
290
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
290
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
291
291
 
292
292
  _, a_gem = util_gem 'a', 2 do |s|
293
293
  s.add_dependency 'garbage ~> 5'
@@ -345,7 +345,7 @@ gem 'other', version
345
345
 
346
346
  options = {
347
347
  :bin_dir => bin_dir,
348
- :install_dir => "/non/existent"
348
+ :install_dir => "/non/existent",
349
349
  }
350
350
 
351
351
  inst = Gem::Installer.at '', options
@@ -794,10 +794,35 @@ gem 'other', version
794
794
 
795
795
  assert_equal spec, installer.install
796
796
 
797
- assert !File.exist?(system_path), 'plugin not written to user plugins_dir'
797
+ assert !File.exist?(system_path), 'plugin incorrectly written to system plugins_dir'
798
798
  assert File.exist?(user_path), 'plugin not written to user plugins_dir'
799
799
  end
800
800
 
801
+ def test_generate_plugins_with_build_root
802
+ spec = quick_gem 'a' do |s|
803
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
804
+ io.write "puts __FILE__"
805
+ end
806
+
807
+ s.files += %w[lib/rubygems_plugin.rb]
808
+ end
809
+
810
+ util_build_gem spec
811
+
812
+ File.chmod(0555, Gem.plugindir)
813
+ system_path = File.join(Gem.plugindir, 'a_plugin.rb')
814
+
815
+ build_root = File.join(@tempdir, 'build_root')
816
+ build_root_path = File.join(build_root, Gem.plugindir.gsub(/^[a-zA-Z]:/, ''), 'a_plugin.rb')
817
+
818
+ installer = Gem::Installer.at spec.cache_file, :build_root => build_root
819
+
820
+ assert_equal spec, installer.install
821
+
822
+ assert !File.exist?(system_path), 'plugin written incorrect written to system plugins_dir'
823
+ assert File.exist?(build_root_path), 'plugin not written to build_root'
824
+ end
825
+
801
826
  def test_keeps_plugins_up_to_date
802
827
  # NOTE: version a-2 is already installed by setup hooks
803
828
 
@@ -1134,7 +1159,7 @@ gem 'other', version
1134
1159
  Gem::Package.build @spec
1135
1160
  end
1136
1161
  end
1137
- installer = Gem::Installer.at @gem
1162
+ installer = Gem::Installer.at @gem, :force => true
1138
1163
  build_rake_in do
1139
1164
  use_ui @ui do
1140
1165
  assert_equal @spec, installer.install
@@ -1156,6 +1181,15 @@ gem 'other', version
1156
1181
  assert_path_exists gem_dir
1157
1182
  end
1158
1183
 
1184
+ def test_install_build_root
1185
+ build_root = File.join(@tempdir, 'build_root')
1186
+
1187
+ @gem = setup_base_gem
1188
+ installer = Gem::Installer.at @gem, :build_root => build_root
1189
+
1190
+ assert_equal @spec, installer.install
1191
+ end
1192
+
1159
1193
  def test_install_missing_dirs
1160
1194
  installer = setup_base_installer
1161
1195
 
@@ -1337,7 +1371,7 @@ gem 'other', version
1337
1371
 
1338
1372
  # reinstall the gem, this is also the same as pristine
1339
1373
  use_ui @ui do
1340
- installer = Gem::Installer.at path
1374
+ installer = Gem::Installer.at path, :force => true
1341
1375
  installer.install
1342
1376
  end
1343
1377
 
@@ -1537,6 +1571,7 @@ gem 'other', version
1537
1571
  installer = setup_base_installer
1538
1572
  @spec.add_dependency 'b', '> 5'
1539
1573
  installer = util_setup_gem
1574
+ installer.force = false
1540
1575
 
1541
1576
  use_ui @ui do
1542
1577
  assert_raises Gem::InstallError do
@@ -1781,13 +1816,24 @@ gem 'other', version
1781
1816
 
1782
1817
  def test_process_options_build_root
1783
1818
  build_root = File.join @tempdir, 'build_root'
1819
+ bin_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'bin')
1820
+ gem_home = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''))
1821
+ plugins_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'plugins')
1784
1822
 
1785
1823
  @gem = setup_base_gem
1786
- installer = Gem::Installer.at @gem, :build_root => build_root
1824
+ installer = use_ui(@ui) { Gem::Installer.at @gem, :build_root => build_root }
1825
+
1826
+ assert_equal build_root, installer.build_root
1827
+ assert_equal bin_dir, installer.bin_dir
1828
+ assert_equal gem_home, installer.gem_home
1787
1829
 
1788
- assert_equal Pathname(build_root), installer.build_root
1789
- assert_equal File.join(build_root, @gemhome, 'bin'), installer.bin_dir
1790
- assert_equal File.join(build_root, @gemhome), installer.gem_home
1830
+ errors = @ui.error.split("\n")
1831
+
1832
+ assert_equal "WARNING: You build with buildroot.", errors.shift
1833
+ assert_equal " Build root: #{build_root}", errors.shift
1834
+ assert_equal " Bin dir: #{bin_dir}", errors.shift
1835
+ assert_equal " Gem home: #{gem_home}", errors.shift
1836
+ assert_equal " Plugins dir: #{plugins_dir}", errors.shift
1791
1837
  end
1792
1838
 
1793
1839
  def test_shebang_arguments
@@ -2169,6 +2215,23 @@ gem 'other', version
2169
2215
  assert_equal ['exe/executable'], default_spec.files
2170
2216
  end
2171
2217
 
2218
+ def test_default_gem_to_specific_install_dir
2219
+ @gem = setup_base_gem
2220
+ installer = util_installer @spec, "#{@gemhome}2"
2221
+ installer.options[:install_as_default] = true
2222
+
2223
+ use_ui @ui do
2224
+ installer.install
2225
+ end
2226
+
2227
+ assert_directory_exists File.join("#{@gemhome}2", 'specifications')
2228
+ assert_directory_exists File.join("#{@gemhome}2", 'specifications', 'default')
2229
+
2230
+ default_spec = eval File.read File.join("#{@gemhome}2", 'specifications', 'default', 'a-2.gemspec')
2231
+ assert_equal Gem::Version.new("2"), default_spec.version
2232
+ assert_equal ['bin/executable'], default_spec.files
2233
+ end
2234
+
2172
2235
  def test_package_attribute
2173
2236
  gem = quick_gem 'c' do |spec|
2174
2237
  util_make_exec spec, '#!/usr/bin/ruby', 'exe'