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
@@ -18,9 +18,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
18
18
|
output = []
|
19
19
|
|
20
20
|
build_rake_in do |rake|
|
21
|
-
|
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
|
-
|
42
|
-
|
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
|
|
@@ -51,13 +47,36 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
51
47
|
end
|
52
48
|
end
|
53
49
|
|
50
|
+
def test_class_no_openssl_override
|
51
|
+
create_temp_mkrf_file('task :default')
|
52
|
+
|
53
|
+
rake = util_spec 'rake' do |s|
|
54
|
+
s.executables = %w[rake]
|
55
|
+
s.files = %w[bin/rake]
|
56
|
+
end
|
57
|
+
|
58
|
+
output = []
|
59
|
+
|
60
|
+
write_file File.join(@tempdir, 'bin', 'rake') do |fp|
|
61
|
+
fp.puts "#!/usr/bin/ruby"
|
62
|
+
fp.puts "require 'openssl'; puts OpenSSL"
|
63
|
+
end
|
64
|
+
|
65
|
+
install_gem rake
|
66
|
+
|
67
|
+
Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, [''], nil, @ext
|
68
|
+
|
69
|
+
output = output.join "\n"
|
70
|
+
|
71
|
+
assert_match "OpenSSL", output
|
72
|
+
assert_match %r{^#{Regexp.escape Gem.ruby} mkrf_conf\.rb}, output
|
73
|
+
end
|
74
|
+
|
54
75
|
def test_class_build_no_mkrf_passes_args
|
55
76
|
output = []
|
56
77
|
|
57
78
|
build_rake_in do |rake|
|
58
|
-
|
59
|
-
Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"]
|
60
|
-
end
|
79
|
+
Gem::Ext::RakeBuilder.build "ext/Rakefile", @dest_path, output, ["test1", "test2"], nil, @ext
|
61
80
|
|
62
81
|
output = output.join "\n"
|
63
82
|
|
@@ -72,9 +91,7 @@ class TestGemExtRakeBuilder < Gem::TestCase
|
|
72
91
|
|
73
92
|
build_rake_in(false) do |rake|
|
74
93
|
error = assert_raises Gem::InstallError do
|
75
|
-
|
76
|
-
Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output
|
77
|
-
end
|
94
|
+
Gem::Ext::RakeBuilder.build "mkrf_conf.rb", @dest_path, output, [], nil, @ext
|
78
95
|
end
|
79
96
|
|
80
97
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
@@ -1147,15 +1172,28 @@ gem 'other', version
|
|
1147
1172
|
end
|
1148
1173
|
|
1149
1174
|
def test_install_force
|
1175
|
+
_, missing_dep_gem = util_gem 'missing_dep', '1' do |s|
|
1176
|
+
s.add_dependency 'doesnt_exist', '1'
|
1177
|
+
end
|
1178
|
+
|
1150
1179
|
use_ui @ui do
|
1151
|
-
installer = Gem::Installer.at
|
1180
|
+
installer = Gem::Installer.at missing_dep_gem, :force => true
|
1152
1181
|
installer.install
|
1153
1182
|
end
|
1154
1183
|
|
1155
|
-
gem_dir = File.join(@gemhome, 'gems', '
|
1184
|
+
gem_dir = File.join(@gemhome, 'gems', 'missing_dep-1')
|
1156
1185
|
assert_path_exists gem_dir
|
1157
1186
|
end
|
1158
1187
|
|
1188
|
+
def test_install_build_root
|
1189
|
+
build_root = File.join(@tempdir, 'build_root')
|
1190
|
+
|
1191
|
+
@gem = setup_base_gem
|
1192
|
+
installer = Gem::Installer.at @gem, :build_root => build_root
|
1193
|
+
|
1194
|
+
assert_equal @spec, installer.install
|
1195
|
+
end
|
1196
|
+
|
1159
1197
|
def test_install_missing_dirs
|
1160
1198
|
installer = setup_base_installer
|
1161
1199
|
|
@@ -1337,7 +1375,7 @@ gem 'other', version
|
|
1337
1375
|
|
1338
1376
|
# reinstall the gem, this is also the same as pristine
|
1339
1377
|
use_ui @ui do
|
1340
|
-
installer = Gem::Installer.at path
|
1378
|
+
installer = Gem::Installer.at path, :force => true
|
1341
1379
|
installer.install
|
1342
1380
|
end
|
1343
1381
|
|
@@ -1537,6 +1575,7 @@ gem 'other', version
|
|
1537
1575
|
installer = setup_base_installer
|
1538
1576
|
@spec.add_dependency 'b', '> 5'
|
1539
1577
|
installer = util_setup_gem
|
1578
|
+
installer.force = false
|
1540
1579
|
|
1541
1580
|
use_ui @ui do
|
1542
1581
|
assert_raises Gem::InstallError do
|
@@ -1585,54 +1624,6 @@ gem 'other', version
|
|
1585
1624
|
end
|
1586
1625
|
end
|
1587
1626
|
|
1588
|
-
def test_pre_install_checks_ruby_version
|
1589
|
-
use_ui @ui do
|
1590
|
-
installer = Gem::Installer.at old_ruby_required('= 1.4.6')
|
1591
|
-
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1592
|
-
installer.pre_install_checks
|
1593
|
-
end
|
1594
|
-
rv = Gem.ruby_version
|
1595
|
-
assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
|
1596
|
-
e.message
|
1597
|
-
end
|
1598
|
-
end
|
1599
|
-
|
1600
|
-
def test_pre_install_checks_ruby_version_with_prereleases
|
1601
|
-
util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
|
1602
|
-
|
1603
|
-
installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
|
1604
|
-
assert installer.pre_install_checks
|
1605
|
-
|
1606
|
-
installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
|
1607
|
-
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1608
|
-
assert installer.pre_install_checks
|
1609
|
-
end
|
1610
|
-
assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
|
1611
|
-
e.message
|
1612
|
-
ensure
|
1613
|
-
util_restore_RUBY_VERSION
|
1614
|
-
end
|
1615
|
-
|
1616
|
-
def test_pre_install_checks_wrong_rubygems_version
|
1617
|
-
spec = util_spec 'old_rubygems_required', '1' do |s|
|
1618
|
-
s.required_rubygems_version = '< 0'
|
1619
|
-
end
|
1620
|
-
|
1621
|
-
util_build_gem spec
|
1622
|
-
|
1623
|
-
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1624
|
-
|
1625
|
-
use_ui @ui do
|
1626
|
-
installer = Gem::Installer.at gem
|
1627
|
-
e = assert_raises Gem::RuntimeRequirementNotMetError do
|
1628
|
-
installer.pre_install_checks
|
1629
|
-
end
|
1630
|
-
rgv = Gem::VERSION
|
1631
|
-
assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
|
1632
|
-
"Try 'gem update --system' to update RubyGems itself.", e.message
|
1633
|
-
end
|
1634
|
-
end
|
1635
|
-
|
1636
1627
|
def test_pre_install_checks_malicious_name
|
1637
1628
|
spec = util_spec '../malicious', '1'
|
1638
1629
|
def spec.full_name # so the spec is buildable
|
@@ -1781,13 +1772,24 @@ gem 'other', version
|
|
1781
1772
|
|
1782
1773
|
def test_process_options_build_root
|
1783
1774
|
build_root = File.join @tempdir, 'build_root'
|
1775
|
+
bin_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'bin')
|
1776
|
+
gem_home = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''))
|
1777
|
+
plugins_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'plugins')
|
1784
1778
|
|
1785
1779
|
@gem = setup_base_gem
|
1786
|
-
installer = Gem::Installer.at @gem, :build_root => build_root
|
1780
|
+
installer = use_ui(@ui) { Gem::Installer.at @gem, :build_root => build_root }
|
1781
|
+
|
1782
|
+
assert_equal build_root, installer.build_root
|
1783
|
+
assert_equal bin_dir, installer.bin_dir
|
1784
|
+
assert_equal gem_home, installer.gem_home
|
1787
1785
|
|
1788
|
-
|
1789
|
-
|
1790
|
-
assert_equal
|
1786
|
+
errors = @ui.error.split("\n")
|
1787
|
+
|
1788
|
+
assert_equal "WARNING: You build with buildroot.", errors.shift
|
1789
|
+
assert_equal " Build root: #{build_root}", errors.shift
|
1790
|
+
assert_equal " Bin dir: #{bin_dir}", errors.shift
|
1791
|
+
assert_equal " Gem home: #{gem_home}", errors.shift
|
1792
|
+
assert_equal " Plugins dir: #{plugins_dir}", errors.shift
|
1791
1793
|
end
|
1792
1794
|
|
1793
1795
|
def test_shebang_arguments
|
@@ -2169,6 +2171,23 @@ gem 'other', version
|
|
2169
2171
|
assert_equal ['exe/executable'], default_spec.files
|
2170
2172
|
end
|
2171
2173
|
|
2174
|
+
def test_default_gem_to_specific_install_dir
|
2175
|
+
@gem = setup_base_gem
|
2176
|
+
installer = util_installer @spec, "#{@gemhome}2"
|
2177
|
+
installer.options[:install_as_default] = true
|
2178
|
+
|
2179
|
+
use_ui @ui do
|
2180
|
+
installer.install
|
2181
|
+
end
|
2182
|
+
|
2183
|
+
assert_directory_exists File.join("#{@gemhome}2", 'specifications')
|
2184
|
+
assert_directory_exists File.join("#{@gemhome}2", 'specifications', 'default')
|
2185
|
+
|
2186
|
+
default_spec = eval File.read File.join("#{@gemhome}2", 'specifications', 'default', 'a-2.gemspec')
|
2187
|
+
assert_equal Gem::Version.new("2"), default_spec.version
|
2188
|
+
assert_equal ['bin/executable'], default_spec.files
|
2189
|
+
end
|
2190
|
+
|
2172
2191
|
def test_package_attribute
|
2173
2192
|
gem = quick_gem 'c' do |spec|
|
2174
2193
|
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
|
@@ -2189,16 +2208,6 @@ gem 'other', version
|
|
2189
2208
|
assert_kind_of(String, installer.gem)
|
2190
2209
|
end
|
2191
2210
|
|
2192
|
-
def old_ruby_required(requirement)
|
2193
|
-
spec = util_spec 'old_ruby_required', '1' do |s|
|
2194
|
-
s.required_ruby_version = requirement
|
2195
|
-
end
|
2196
|
-
|
2197
|
-
util_build_gem spec
|
2198
|
-
|
2199
|
-
spec.cache_file
|
2200
|
-
end
|
2201
|
-
|
2202
2211
|
def util_execless
|
2203
2212
|
@spec = util_spec 'z'
|
2204
2213
|
util_build_gem @spec
|
@@ -95,7 +95,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
95
95
|
'SHA256' => {
|
96
96
|
'metadata.gz' => metadata_sha256,
|
97
97
|
'data.tar.gz' => Digest::SHA256.hexdigest(tar),
|
98
|
-
}
|
98
|
+
},
|
99
99
|
}
|
100
100
|
|
101
101
|
assert_equal expected, YAML.load(checksums)
|
@@ -252,7 +252,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
252
252
|
end
|
253
253
|
|
254
254
|
def test_build_auto_signed
|
255
|
-
skip 'openssl is missing' unless
|
255
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
256
256
|
|
257
257
|
FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
|
258
258
|
|
@@ -295,7 +295,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
295
295
|
end
|
296
296
|
|
297
297
|
def test_build_auto_signed_encrypted_key
|
298
|
-
skip 'openssl is missing' unless
|
298
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
299
299
|
|
300
300
|
FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
|
301
301
|
|
@@ -364,7 +364,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
364
364
|
end
|
365
365
|
|
366
366
|
def test_build_signed
|
367
|
-
skip 'openssl is missing' unless
|
367
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
368
368
|
|
369
369
|
spec = Gem::Specification.new 'build', '1'
|
370
370
|
spec.summary = 'build'
|
@@ -401,7 +401,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
401
401
|
end
|
402
402
|
|
403
403
|
def test_build_signed_encrypted_key
|
404
|
-
skip 'openssl is missing' unless
|
404
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
405
405
|
|
406
406
|
spec = Gem::Specification.new 'build', '1'
|
407
407
|
spec.summary = 'build'
|
@@ -957,7 +957,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
957
957
|
end
|
958
958
|
|
959
959
|
def test_verify_security_policy
|
960
|
-
skip 'openssl is missing' unless
|
960
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
961
961
|
|
962
962
|
package = Gem::Package.new @gem
|
963
963
|
package.security_policy = Gem::Security::HighSecurity
|
@@ -974,7 +974,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
974
974
|
end
|
975
975
|
|
976
976
|
def test_verify_security_policy_low_security
|
977
|
-
skip 'openssl is missing' unless
|
977
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
978
978
|
|
979
979
|
@spec.cert_chain = [PUBLIC_CERT.to_pem]
|
980
980
|
@spec.signing_key = PRIVATE_KEY
|
@@ -994,7 +994,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
994
994
|
end
|
995
995
|
|
996
996
|
def test_verify_security_policy_checksum_missing
|
997
|
-
skip 'openssl is missing' unless
|
997
|
+
skip 'openssl is missing' unless Gem::HAVE_OPENSSL
|
998
998
|
|
999
999
|
@spec.cert_chain = [PUBLIC_CERT.to_pem]
|
1000
1000
|
@spec.signing_key = PRIVATE_KEY
|