rubygems-update 3.2.0.rc.2 → 3.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{History.txt → CHANGELOG.md} +520 -501
- data/Manifest.txt +62 -55
- data/POLICIES.md +4 -3
- data/Rakefile +23 -7
- data/bundler/CHANGELOG.md +84 -19
- data/bundler/UPGRADING.md +1 -1
- data/bundler/bundler.gemspec +1 -1
- data/bundler/lib/bundler.rb +11 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli.rb +5 -5
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/exec.rb +3 -3
- data/bundler/lib/bundler/cli/install.rb +14 -5
- data/bundler/lib/bundler/cli/outdated.rb +0 -2
- data/bundler/lib/bundler/cli/update.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +5 -13
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
- data/bundler/lib/bundler/definition.rb +23 -25
- data/bundler/lib/bundler/dependency.rb +3 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher/index.rb +2 -3
- data/bundler/lib/bundler/friendly_errors.rb +15 -0
- data/bundler/lib/bundler/gem_helpers.rb +30 -24
- data/bundler/lib/bundler/index.rb +5 -1
- data/bundler/lib/bundler/injector.rb +9 -2
- data/bundler/lib/bundler/installer.rb +7 -5
- data/bundler/lib/bundler/lazy_specification.rb +20 -9
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-add.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-cache.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-check.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +2 -5
- data/bundler/{man → lib/bundler/man}/bundle-config.1.ronn +1 -9
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-gem.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-info.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +2 -2
- data/bundler/{man → lib/bundler/man}/bundle-install.1.ronn +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-list.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-lock.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-platform.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-viz.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle.1.ronn +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5 +1 -1
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +0 -0
- data/bundler/lib/bundler/man/index.txt +25 -0
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/resolver.rb +25 -29
- data/bundler/lib/bundler/resolver/spec_group.rb +19 -25
- data/bundler/lib/bundler/rubygems_integration.rb +4 -6
- data/bundler/lib/bundler/settings.rb +0 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +28 -41
- data/bundler/lib/bundler/spec_set.rb +6 -8
- data/bundler/lib/bundler/stub_specification.rb +0 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +0 -1
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -0
- data/bundler/lib/bundler/uri_credentials_filter.rb +2 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +12 -8
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems.rb +6 -2
- data/lib/rubygems/available_set.rb +1 -1
- data/lib/rubygems/command_manager.rb +2 -2
- data/lib/rubygems/commands/build_command.rb +37 -20
- data/lib/rubygems/commands/cert_command.rb +1 -1
- data/lib/rubygems/commands/help_command.rb +2 -0
- data/lib/rubygems/commands/owner_command.rb +10 -3
- data/lib/rubygems/commands/pristine_command.rb +1 -1
- data/lib/rubygems/commands/push_command.rb +7 -4
- data/lib/rubygems/commands/query_command.rb +17 -0
- data/lib/rubygems/commands/server_command.rb +4 -0
- data/lib/rubygems/commands/setup_command.rb +26 -90
- data/lib/rubygems/commands/sources_command.rb +6 -2
- data/lib/rubygems/commands/specification_command.rb +6 -0
- data/lib/rubygems/commands/yank_command.rb +4 -5
- data/lib/rubygems/core_ext/kernel_require.rb +3 -0
- data/lib/rubygems/core_ext/kernel_warn.rb +6 -7
- data/lib/rubygems/defaults.rb +2 -2
- data/lib/rubygems/dependency.rb +1 -1
- data/lib/rubygems/dependency_installer.rb +5 -3
- data/lib/rubygems/ext/builder.rb +16 -35
- data/lib/rubygems/ext/cmake_builder.rb +5 -6
- data/lib/rubygems/ext/configure_builder.rb +5 -6
- data/lib/rubygems/ext/ext_conf_builder.rb +19 -14
- data/lib/rubygems/ext/rake_builder.rb +4 -4
- data/lib/rubygems/gemcutter_utilities.rb +101 -20
- data/lib/rubygems/indexer.rb +0 -1
- data/lib/rubygems/install_update_options.rb +2 -2
- data/lib/rubygems/installer.rb +12 -32
- data/lib/rubygems/installer_test_case.rb +7 -6
- data/lib/rubygems/name_tuple.rb +1 -1
- data/lib/rubygems/openssl.rb +4 -4
- data/lib/rubygems/package.rb +3 -2
- data/lib/rubygems/package/tar_header.rb +1 -1
- data/lib/rubygems/package/tar_test_case.rb +1 -1
- data/lib/rubygems/platform.rb +18 -7
- data/lib/rubygems/query_utils.rb +0 -9
- data/lib/rubygems/remote_fetcher.rb +5 -4
- data/lib/rubygems/request.rb +4 -3
- data/lib/rubygems/request_set.rb +2 -13
- data/lib/rubygems/request_set/gem_dependency_api.rb +4 -4
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver.rb +7 -2
- data/lib/rubygems/resolver/activation_request.rb +9 -1
- data/lib/rubygems/resolver/api_set.rb +29 -20
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +8 -3
- data/lib/rubygems/resolver/best_set.rb +2 -2
- data/lib/rubygems/resolver/conflict.rb +1 -1
- data/lib/rubygems/resolver/dependency_request.rb +1 -1
- data/lib/rubygems/resolver/index_specification.rb +29 -0
- data/lib/rubygems/resolver/installer_set.rb +58 -9
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/spec_specification.rb +14 -0
- data/lib/rubygems/resolver/specification.rb +13 -1
- data/lib/rubygems/s3_uri_signer.rb +1 -1
- data/lib/rubygems/security.rb +1 -2
- data/lib/rubygems/security/policy.rb +1 -1
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/server.rb +7 -2
- data/lib/rubygems/source.rb +20 -9
- data/lib/rubygems/spec_fetcher.rb +1 -1
- data/lib/rubygems/specification.rb +8 -8
- data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -1
- data/lib/rubygems/test_case.rb +14 -27
- data/lib/rubygems/test_utilities.rb +6 -5
- data/lib/rubygems/uri_formatter.rb +2 -1
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +2 -2
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/test_bundled_ca.rb +9 -5
- data/test/rubygems/test_gem.rb +3 -3
- data/test/rubygems/test_gem_commands_build_command.rb +197 -5
- data/test/rubygems/test_gem_commands_cert_command.rb +2 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +1 -1
- data/test/rubygems/test_gem_commands_contents_command.rb +2 -2
- data/test/rubygems/test_gem_commands_help_command.rb +15 -2
- data/test/rubygems/test_gem_commands_install_command.rb +132 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +49 -1
- data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
- data/test/rubygems/test_gem_commands_push_command.rb +70 -5
- data/test/rubygems/test_gem_commands_query_command.rb +3 -3
- data/test/rubygems/test_gem_commands_setup_command.rb +20 -48
- data/test/rubygems/test_gem_commands_signin_command.rb +27 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +60 -0
- data/test/rubygems/test_gem_commands_specification_command.rb +28 -0
- data/test/rubygems/test_gem_commands_update_command.rb +2 -2
- data/test/rubygems/test_gem_commands_yank_command.rb +31 -1
- data/test/rubygems/test_gem_dependency_installer.rb +63 -49
- data/test/rubygems/test_gem_dependency_list.rb +2 -2
- data/test/rubygems/test_gem_ext_builder.rb +16 -20
- data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -13
- data/test/rubygems/test_gem_ext_configure_builder.rb +5 -11
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -26
- data/test/rubygems/test_gem_ext_rake_builder.rb +30 -13
- data/test/rubygems/test_gem_gem_runner.rb +5 -4
- data/test/rubygems/test_gem_gemcutter_utilities.rb +3 -3
- data/test/rubygems/test_gem_install_update_options.rb +15 -3
- data/test/rubygems/test_gem_installer.rb +80 -71
- data/test/rubygems/test_gem_package.rb +8 -8
- data/test/rubygems/test_gem_package_old.rb +4 -4
- data/test/rubygems/test_gem_package_tar_writer.rb +1 -1
- data/test/rubygems/test_gem_platform.rb +63 -4
- data/test/rubygems/test_gem_remote_fetcher.rb +15 -19
- data/test/rubygems/test_gem_request.rb +2 -2
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -4
- data/test/rubygems/test_gem_resolver_api_set.rb +58 -55
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -3
- data/test/rubygems/test_gem_resolver_best_set.rb +26 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -1
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -1
- data/test/rubygems/test_gem_security.rb +2 -2
- data/test/rubygems/test_gem_security_policy.rb +2 -2
- data/test/rubygems/test_gem_security_signer.rb +2 -2
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
- data/test/rubygems/test_gem_source.rb +7 -2
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_specification.rb +6 -7
- data/test/rubygems/test_gem_uninstaller.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +1 -1
- data/test/rubygems/test_gem_version_option.rb +1 -1
- data/test/rubygems/test_require.rb +50 -9
- data/test/test_changelog_generator.rb +17 -0
- metadata +69 -86
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
@@ -186,6 +186,34 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
|
|
186
186
|
assert_equal Gem::Version.new("1"), spec.version
|
187
187
|
end
|
188
188
|
|
189
|
+
def test_execute_remote_with_version_and_platform
|
190
|
+
original_platforms = Gem.platforms.dup
|
191
|
+
|
192
|
+
spec_fetcher do |fetcher|
|
193
|
+
fetcher.spec 'foo', "1"
|
194
|
+
fetcher.spec 'foo', "1" do |s|
|
195
|
+
s.platform = 'x86_64-linux'
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
@cmd.options[:args] = %w[foo]
|
200
|
+
@cmd.options[:version] = "1"
|
201
|
+
@cmd.options[:domain] = :remote
|
202
|
+
@cmd.options[:added_platform] = true
|
203
|
+
Gem.platforms = [Gem::Platform::RUBY, Gem::Platform.new("x86_64-linux")]
|
204
|
+
|
205
|
+
use_ui @ui do
|
206
|
+
@cmd.execute
|
207
|
+
end
|
208
|
+
|
209
|
+
spec = Gem::Specification.from_yaml @ui.output
|
210
|
+
|
211
|
+
assert_equal Gem::Version.new("1"), spec.version
|
212
|
+
assert_equal Gem::Platform.new("x86_64-linux"), spec.platform
|
213
|
+
ensure
|
214
|
+
Gem.platforms = original_platforms
|
215
|
+
end
|
216
|
+
|
189
217
|
def test_execute_remote_without_prerelease
|
190
218
|
spec_fetcher do |fetcher|
|
191
219
|
fetcher.spec 'foo', '2.0.0'
|
@@ -198,13 +198,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
198
198
|
|
199
199
|
def test_execute_system_specific_newer_than_or_equal_to_3_2_leaves_plugins_dir_alone
|
200
200
|
spec_fetcher do |fetcher|
|
201
|
-
fetcher.download 'rubygems-update', 3.2 do |s|
|
201
|
+
fetcher.download 'rubygems-update', "3.2.a" do |s|
|
202
202
|
s.files = %w[setup.rb]
|
203
203
|
end
|
204
204
|
end
|
205
205
|
|
206
206
|
@cmd.options[:args] = []
|
207
|
-
@cmd.options[:system] = "3.2"
|
207
|
+
@cmd.options[:system] = "3.2.a"
|
208
208
|
|
209
209
|
FileUtils.mkdir_p Gem.plugindir
|
210
210
|
plugin_file = File.join(Gem.plugindir, 'a_plugin.rb')
|
@@ -70,7 +70,7 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
70
70
|
yank_uri = 'http://example/api/v1/gems/yank'
|
71
71
|
@fetcher.data[yank_uri] = [
|
72
72
|
[response_fail, 401, 'Unauthorized'],
|
73
|
-
['Successfully yanked', 200, 'OK']
|
73
|
+
['Successfully yanked', 200, 'OK'],
|
74
74
|
]
|
75
75
|
|
76
76
|
@cmd.options[:args] = %w[a]
|
@@ -147,4 +147,34 @@ class TestGemCommandsYankCommand < Gem::TestCase
|
|
147
147
|
assert_equal 'key', @fetcher.last_request['Authorization']
|
148
148
|
assert_equal [yank_uri], @fetcher.paths
|
149
149
|
end
|
150
|
+
|
151
|
+
def test_yank_gem_unathorized_api_key
|
152
|
+
response_forbidden = "The API key doesn't have access"
|
153
|
+
response_success = 'Successfully yanked'
|
154
|
+
host = 'http://example'
|
155
|
+
|
156
|
+
@fetcher.data["#{host}/api/v1/gems/yank"] = [
|
157
|
+
[response_forbidden, 403, 'Forbidden'],
|
158
|
+
[response_success, 200, "OK"],
|
159
|
+
]
|
160
|
+
|
161
|
+
@fetcher.data["#{host}/api/v1/api_key"] = ["", 200, "OK"]
|
162
|
+
@cmd.options[:args] = %w[a]
|
163
|
+
@cmd.options[:added_platform] = true
|
164
|
+
@cmd.options[:version] = req('= 1.0')
|
165
|
+
@cmd.instance_variable_set :@host, host
|
166
|
+
@cmd.instance_variable_set :@scope, :yank_rubygem
|
167
|
+
|
168
|
+
@ui = Gem::MockGemUi.new "some@mail.com\npass\n"
|
169
|
+
use_ui @ui do
|
170
|
+
@cmd.execute
|
171
|
+
end
|
172
|
+
|
173
|
+
access_notice = "The existing key doesn't have access of yank_rubygem on http://example. Please sign in to update access."
|
174
|
+
assert_match access_notice, @ui.output
|
175
|
+
assert_match "Email:", @ui.output
|
176
|
+
assert_match "Password:", @ui.output
|
177
|
+
assert_match "Added yank_rubygem scope to the existing API key", @ui.output
|
178
|
+
assert_match response_success, @ui.output
|
179
|
+
end
|
150
180
|
end
|
@@ -528,6 +528,40 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
528
528
|
assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
|
529
529
|
end
|
530
530
|
|
531
|
+
def test_install_no_minimal_deps
|
532
|
+
util_setup_gems
|
533
|
+
|
534
|
+
_, e1_gem = util_gem 'e', '1' do |s|
|
535
|
+
s.add_dependency 'b'
|
536
|
+
end
|
537
|
+
|
538
|
+
_, b2_gem = util_gem 'b', '2' do |s|
|
539
|
+
s.add_dependency 'a'
|
540
|
+
end
|
541
|
+
|
542
|
+
FileUtils.mv @a1_gem, @tempdir
|
543
|
+
FileUtils.mv @b1_gem, @tempdir
|
544
|
+
FileUtils.mv b2_gem, @tempdir
|
545
|
+
FileUtils.mv e1_gem, @tempdir
|
546
|
+
|
547
|
+
inst = nil
|
548
|
+
|
549
|
+
Dir.chdir @tempdir do
|
550
|
+
inst = Gem::DependencyInstaller.new :ignore_dependencies => true
|
551
|
+
inst.install 'b', req('= 1')
|
552
|
+
end
|
553
|
+
|
554
|
+
assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
|
555
|
+
'sanity check'
|
556
|
+
|
557
|
+
Dir.chdir @tempdir do
|
558
|
+
inst = Gem::DependencyInstaller.new :minimal_deps => false
|
559
|
+
inst.install 'e'
|
560
|
+
end
|
561
|
+
|
562
|
+
assert_equal %w[a-1 b-2 e-1], inst.installed_gems.map {|s| s.full_name }
|
563
|
+
end
|
564
|
+
|
531
565
|
def test_install_no_document
|
532
566
|
util_setup_gems
|
533
567
|
|
@@ -749,7 +783,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
749
783
|
inst = nil
|
750
784
|
|
751
785
|
Dir.chdir @tempdir do
|
752
|
-
inst = Gem::DependencyInstaller.new
|
786
|
+
inst = Gem::DependencyInstaller.new :force => true
|
753
787
|
inst.install 'a'
|
754
788
|
end
|
755
789
|
|
@@ -842,7 +876,7 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
842
876
|
|
843
877
|
require 'rubygems/openssl'
|
844
878
|
|
845
|
-
if
|
879
|
+
if Gem::HAVE_OPENSSL
|
846
880
|
def test_install_security_policy
|
847
881
|
util_setup_gems
|
848
882
|
|
@@ -912,6 +946,31 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
912
946
|
assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
|
913
947
|
end
|
914
948
|
|
949
|
+
def test_install_legacy_spec_with_nil_required_rubygems_version
|
950
|
+
path = File.expand_path "../data/null-required-rubygems-version.gemspec.rz", __FILE__
|
951
|
+
spec = Marshal.load Gem.read_binary(path)
|
952
|
+
def spec.validate(*args); end
|
953
|
+
|
954
|
+
util_build_gem spec
|
955
|
+
|
956
|
+
cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
|
957
|
+
FileUtils.mkdir_p File.dirname cache_file
|
958
|
+
FileUtils.mv spec.cache_file, cache_file
|
959
|
+
|
960
|
+
util_setup_spec_fetcher spec
|
961
|
+
|
962
|
+
data = Gem.read_binary(cache_file)
|
963
|
+
|
964
|
+
@fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
|
965
|
+
|
966
|
+
dep = Gem::Dependency.new 'activesupport'
|
967
|
+
|
968
|
+
inst = Gem::DependencyInstaller.new
|
969
|
+
inst.install dep
|
970
|
+
|
971
|
+
assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
|
972
|
+
end
|
973
|
+
|
915
974
|
def test_find_gems_gems_with_sources
|
916
975
|
util_setup_gems
|
917
976
|
|
@@ -1068,21 +1127,6 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1068
1127
|
assert_equal %w[a-1], requests
|
1069
1128
|
end
|
1070
1129
|
|
1071
|
-
def util_write_a1_bin
|
1072
|
-
write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp|
|
1073
|
-
fp.puts "#!/usr/bin/ruby"
|
1074
|
-
end
|
1075
|
-
end
|
1076
|
-
|
1077
|
-
def util_setup_c1_pre
|
1078
|
-
@c1_pre, @c1_pre_gem = util_spec 'c', '1.a' do |s|
|
1079
|
-
s.add_dependency 'a', '1.a'
|
1080
|
-
s.add_dependency 'b', '1'
|
1081
|
-
end
|
1082
|
-
|
1083
|
-
util_reset_gems
|
1084
|
-
end
|
1085
|
-
|
1086
1130
|
def util_setup_d
|
1087
1131
|
@d1, @d1_gem = util_gem 'd', '1'
|
1088
1132
|
@d2, @d2_gem = util_gem 'd', '2'
|
@@ -1090,43 +1134,13 @@ class TestGemDependencyInstaller < Gem::TestCase
|
|
1090
1134
|
util_reset_gems
|
1091
1135
|
end
|
1092
1136
|
|
1093
|
-
def util_setup_wxyz
|
1094
|
-
@x1_m, @x1_m_gem = util_spec 'x', '1' do |s|
|
1095
|
-
s.platform = Gem::Platform.new %w[cpu my_platform 1]
|
1096
|
-
end
|
1097
|
-
|
1098
|
-
@x1_o, @x1_o_gem = util_spec 'x', '1' do |s|
|
1099
|
-
s.platform = Gem::Platform.new %w[cpu other_platform 1]
|
1100
|
-
end
|
1101
|
-
|
1102
|
-
@w1, @w1_gem = util_spec 'w', '1', 'x' => nil
|
1103
|
-
|
1104
|
-
@y1, @y1_gem = util_spec 'y', '1'
|
1105
|
-
@y1_1_p, @y1_1_p_gem = util_spec 'y', '1.1' do |s|
|
1106
|
-
s.platform = Gem::Platform.new %w[cpu my_platform 1]
|
1107
|
-
end
|
1108
|
-
|
1109
|
-
@z1, @z1_gem = util_spec 'z', '1', 'y' => nil
|
1110
|
-
|
1111
|
-
util_reset_gems
|
1112
|
-
end
|
1113
|
-
|
1114
1137
|
def util_reset_gems
|
1115
1138
|
@a1 ||= nil
|
1116
1139
|
@b1 ||= nil
|
1117
1140
|
@a1_pre ||= nil
|
1118
|
-
@c1_pre ||= nil
|
1119
1141
|
@d1 ||= nil
|
1120
1142
|
@d2 ||= nil
|
1121
|
-
|
1122
|
-
@
|
1123
|
-
@x1_o ||= nil
|
1124
|
-
@y1 ||= nil
|
1125
|
-
@y1_1_p ||= nil
|
1126
|
-
@z1 ||= nil
|
1127
|
-
|
1128
|
-
util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @c1_pre,
|
1129
|
-
@d1, @d2, @x1_m, @x1_o, @w1, @y1,
|
1130
|
-
@y1_1_p, @z1].compact)
|
1143
|
+
|
1144
|
+
util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @d1, @d2].compact)
|
1131
1145
|
end
|
1132
1146
|
end
|
@@ -30,9 +30,8 @@ class TestGemExtBuilder < Gem::TestCase
|
|
30
30
|
ENV['DESTDIR'] = 'destination'
|
31
31
|
results = []
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
io.puts <<-MAKEFILE
|
33
|
+
File.open File.join(@ext, 'Makefile'), 'w' do |io|
|
34
|
+
io.puts <<-MAKEFILE
|
36
35
|
all:
|
37
36
|
\t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}"
|
38
37
|
|
@@ -41,17 +40,16 @@ clean:
|
|
41
40
|
|
42
41
|
install:
|
43
42
|
\t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}"
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
Gem::Ext::Builder.make @dest_path, results
|
43
|
+
MAKEFILE
|
48
44
|
end
|
49
45
|
|
46
|
+
Gem::Ext::Builder.make @dest_path, results, @ext
|
47
|
+
|
50
48
|
results = results.join("\n").b
|
51
49
|
|
52
|
-
assert_match %r{
|
53
|
-
assert_match %r{
|
54
|
-
assert_match %r{
|
50
|
+
assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} clean$}, results
|
51
|
+
assert_match %r{DESTDIR\\=#{ENV['DESTDIR']}$}, results
|
52
|
+
assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} install$}, results
|
55
53
|
|
56
54
|
if /nmake/ !~ results
|
57
55
|
assert_match %r{^clean: destination$}, results
|
@@ -64,25 +62,23 @@ install:
|
|
64
62
|
ENV['DESTDIR'] = 'destination'
|
65
63
|
results = []
|
66
64
|
|
67
|
-
|
68
|
-
|
69
|
-
io.puts <<-MAKEFILE
|
65
|
+
File.open File.join(@ext, 'Makefile'), 'w' do |io|
|
66
|
+
io.puts <<-MAKEFILE
|
70
67
|
all:
|
71
68
|
\t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}"
|
72
69
|
|
73
70
|
install:
|
74
71
|
\t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}"
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
Gem::Ext::Builder.make @dest_path, results
|
72
|
+
MAKEFILE
|
79
73
|
end
|
80
74
|
|
75
|
+
Gem::Ext::Builder.make @dest_path, results, @ext
|
76
|
+
|
81
77
|
results = results.join("\n").b
|
82
78
|
|
83
|
-
assert_match %r{
|
84
|
-
assert_match %r{
|
85
|
-
assert_match %r{
|
79
|
+
assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} clean$}, results
|
80
|
+
assert_match %r{DESTDIR\\=#{ENV['DESTDIR']}$}, results
|
81
|
+
assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} install$}, results
|
86
82
|
end
|
87
83
|
|
88
84
|
def test_build_extensions
|
@@ -36,14 +36,11 @@ install (FILES test.txt DESTINATION bin)
|
|
36
36
|
|
37
37
|
output = []
|
38
38
|
|
39
|
-
|
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
|
|
45
|
-
assert_match
|
46
|
-
%r{^cmake \. -DCMAKE_INSTALL_PREFIX=#{Regexp.escape @dest_path}}, output
|
43
|
+
assert_match %r{^cmake \. -DCMAKE_INSTALL_PREFIX\\=#{Regexp.escape @dest_path}}, output
|
47
44
|
assert_match %r{#{Regexp.escape @ext}}, output
|
48
45
|
assert_contains_make_command '', output
|
49
46
|
assert_contains_make_command 'install', output
|
@@ -54,19 +51,16 @@ install (FILES test.txt DESTINATION bin)
|
|
54
51
|
output = []
|
55
52
|
|
56
53
|
error = assert_raises Gem::InstallError do
|
57
|
-
|
58
|
-
Gem::Ext::CmakeBuilder.build nil, @dest_path, output
|
59
|
-
end
|
54
|
+
Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
|
60
55
|
end
|
61
56
|
|
62
57
|
output = output.join "\n"
|
63
58
|
|
64
59
|
shell_error_msg = %r{(CMake Error: .*)}
|
65
|
-
sh_prefix_cmake = "cmake . -DCMAKE_INSTALL_PREFIX="
|
66
60
|
|
67
61
|
assert_match 'cmake failed', error.message
|
68
62
|
|
69
|
-
assert_match %r{
|
63
|
+
assert_match %r{^cmake . -DCMAKE_INSTALL_PREFIX\\=#{Regexp.escape @dest_path}}, output
|
70
64
|
assert_match %r{#{shell_error_msg}}, output
|
71
65
|
end
|
72
66
|
|
@@ -77,9 +71,7 @@ install (FILES test.txt DESTINATION bin)
|
|
77
71
|
|
78
72
|
output = []
|
79
73
|
|
80
|
-
|
81
|
-
Gem::Ext::CmakeBuilder.build nil, @dest_path, output
|
82
|
-
end
|
74
|
+
Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
|
83
75
|
|
84
76
|
output = output.join "\n"
|
85
77
|
|
@@ -25,12 +25,10 @@ class TestGemExtConfigureBuilder < Gem::TestCase
|
|
25
25
|
|
26
26
|
output = []
|
27
27
|
|
28
|
-
|
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
|
-
assert_equal "sh ./configure --prefix
|
31
|
+
assert_equal "sh ./configure --prefix\\=#{@dest_path}", output.shift
|
34
32
|
assert_equal "", output.shift
|
35
33
|
assert_match(/^current directory:/, output.shift)
|
36
34
|
assert_contains_make_command 'clean', output.shift
|
@@ -48,13 +46,11 @@ class TestGemExtConfigureBuilder < Gem::TestCase
|
|
48
46
|
output = []
|
49
47
|
|
50
48
|
error = assert_raises Gem::InstallError do
|
51
|
-
|
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)?)}
|
57
|
-
sh_prefix_configure = "sh ./configure --prefix
|
53
|
+
sh_prefix_configure = "sh ./configure --prefix\\="
|
58
54
|
|
59
55
|
assert_match 'configure failed', error.message
|
60
56
|
|
@@ -74,9 +70,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
|
|
74
70
|
end
|
75
71
|
|
76
72
|
output = []
|
77
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|