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
@@ -39,7 +39,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
|
|
39
39
|
|
40
40
|
rails = specs['rails-3.0.3']
|
41
41
|
|
42
|
-
repo = @gem_repo + '
|
42
|
+
repo = @gem_repo + 'info'
|
43
43
|
|
44
44
|
set = Gem::Resolver::APISet.new repo
|
45
45
|
|
@@ -123,7 +123,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
|
|
123
123
|
fetcher.spec 'a', 1
|
124
124
|
end
|
125
125
|
|
126
|
-
dep_uri = URI(@gem_repo) + '
|
126
|
+
dep_uri = URI(@gem_repo) + 'info'
|
127
127
|
set = Gem::Resolver::APISet.new dep_uri
|
128
128
|
data = {
|
129
129
|
:name => 'a',
|
@@ -147,7 +147,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
|
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
150
|
-
dep_uri = URI(@gem_repo) + '
|
150
|
+
dep_uri = URI(@gem_repo) + 'info'
|
151
151
|
set = Gem::Resolver::APISet.new dep_uri
|
152
152
|
data = {
|
153
153
|
:name => 'j',
|
@@ -39,7 +39,7 @@ class TestGemResolverBestSet < Gem::TestCase
|
|
39
39
|
|
40
40
|
set = @DR::BestSet.new
|
41
41
|
|
42
|
-
api_uri = URI(@gem_repo)
|
42
|
+
api_uri = URI(@gem_repo)
|
43
43
|
|
44
44
|
set.sets << Gem::Resolver::APISet.new(api_uri)
|
45
45
|
|
@@ -99,12 +99,12 @@ class TestGemResolverBestSet < Gem::TestCase
|
|
99
99
|
def test_replace_failed_api_set
|
100
100
|
set = @DR::BestSet.new
|
101
101
|
|
102
|
-
api_uri = URI(@gem_repo) + './
|
102
|
+
api_uri = URI(@gem_repo) + './info/'
|
103
103
|
api_set = Gem::Resolver::APISet.new api_uri
|
104
104
|
|
105
105
|
set.sets << api_set
|
106
106
|
|
107
|
-
error_uri = api_uri + '
|
107
|
+
error_uri = api_uri + 'a'
|
108
108
|
|
109
109
|
error = Gem::RemoteFetcher::FetchError.new 'bogus', error_uri
|
110
110
|
|
@@ -132,4 +132,27 @@ class TestGemResolverBestSet < Gem::TestCase
|
|
132
132
|
|
133
133
|
assert_equal error, e
|
134
134
|
end
|
135
|
+
|
136
|
+
def test_replace_failed_api_set_uri_with_credentials
|
137
|
+
set = @DR::BestSet.new
|
138
|
+
|
139
|
+
api_uri = URI(@gem_repo) + './info/'
|
140
|
+
api_uri.user = 'user'
|
141
|
+
api_uri.password = 'pass'
|
142
|
+
api_set = Gem::Resolver::APISet.new api_uri
|
143
|
+
|
144
|
+
set.sets << api_set
|
145
|
+
|
146
|
+
error_uri = api_uri + 'a'
|
147
|
+
|
148
|
+
error = Gem::RemoteFetcher::FetchError.new 'bogus', error_uri
|
149
|
+
|
150
|
+
set.replace_failed_api_set error
|
151
|
+
|
152
|
+
assert_equal 1, set.sets.size
|
153
|
+
|
154
|
+
refute_includes set.sets, api_set
|
155
|
+
|
156
|
+
assert_kind_of Gem::Resolver::IndexSet, set.sets.first
|
157
|
+
end
|
135
158
|
end
|
@@ -51,7 +51,7 @@ class TestGemResolverVendorSet < Gem::TestCase
|
|
51
51
|
source = Gem::Source::Vendor.new directory
|
52
52
|
|
53
53
|
expected = [
|
54
|
-
Gem::Resolver::VendorSpecification.new(@set, spec, source)
|
54
|
+
Gem::Resolver::VendorSpecification.new(@set, spec, source),
|
55
55
|
]
|
56
56
|
|
57
57
|
assert_equal expected, found
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
require 'rubygems/security'
|
4
4
|
|
5
|
-
unless
|
5
|
+
unless Gem::HAVE_OPENSSL
|
6
6
|
warn 'Skipping Gem::Security tests. openssl not found.'
|
7
7
|
end
|
8
8
|
|
@@ -309,4 +309,4 @@ class TestGemSecurity < Gem::TestCase
|
|
309
309
|
|
310
310
|
assert_equal key.to_pem, key_from_file.to_pem
|
311
311
|
end
|
312
|
-
end if
|
312
|
+
end if Gem::HAVE_OPENSSL && !Gem.java_platform?
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rubygems/test_case'
|
4
4
|
|
5
|
-
unless
|
5
|
+
unless Gem::HAVE_OPENSSL
|
6
6
|
warn 'Skipping Gem::Security::Policy tests. openssl not found.'
|
7
7
|
end
|
8
8
|
|
@@ -532,4 +532,4 @@ class TestGemSecurityPolicy < Gem::TestCase
|
|
532
532
|
|
533
533
|
return digests, signatures
|
534
534
|
end
|
535
|
-
end if
|
535
|
+
end if Gem::HAVE_OPENSSL
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
|
4
|
-
unless
|
4
|
+
unless Gem::HAVE_OPENSSL
|
5
5
|
warn 'Skipping Gem::Security::Signer tests. openssl not found.'
|
6
6
|
end
|
7
7
|
|
@@ -214,4 +214,4 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
|
|
214
214
|
signer.sign 'hello'
|
215
215
|
end
|
216
216
|
end
|
217
|
-
end if
|
217
|
+
end if Gem::HAVE_OPENSSL
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'rubygems/test_case'
|
3
3
|
|
4
|
-
unless
|
4
|
+
unless Gem::HAVE_OPENSSL
|
5
5
|
warn 'Skipping Gem::Security::TrustDir tests. openssl not found.'
|
6
6
|
end
|
7
7
|
|
@@ -95,4 +95,4 @@ class TestGemSecurityTrustDir < Gem::TestCase
|
|
95
95
|
|
96
96
|
assert_equal mask, File.stat(@dest_dir).mode unless win_platform?
|
97
97
|
end
|
98
|
-
end if
|
98
|
+
end if Gem::HAVE_OPENSSL
|
@@ -44,9 +44,9 @@ class TestGemSource < Gem::TestCase
|
|
44
44
|
|
45
45
|
def test_dependency_resolver_set_bundler_api
|
46
46
|
response = Net::HTTPResponse.new '1.1', 200, 'OK'
|
47
|
-
response.uri = URI('http://example')
|
47
|
+
response.uri = URI('http://example')
|
48
48
|
|
49
|
-
@fetcher.data[
|
49
|
+
@fetcher.data[@gem_repo] = response
|
50
50
|
|
51
51
|
set = @source.dependency_resolver_set
|
52
52
|
|
@@ -240,6 +240,11 @@ class TestGemSource < Gem::TestCase
|
|
240
240
|
refute rubygems_source.typo_squatting?("rubysertgems.org")
|
241
241
|
end
|
242
242
|
|
243
|
+
def test_typo_squatting_false_positive
|
244
|
+
rubygems_source = Gem::Source.new("https://rubygems.org")
|
245
|
+
refute rubygems_source.typo_squatting?("rubygems.org")
|
246
|
+
end
|
247
|
+
|
243
248
|
def test_typo_squatting_custom_distance_threshold
|
244
249
|
rubygems_source = Gem::Source.new("https://rubgems.org")
|
245
250
|
distance_threshold = 5
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'rubygems/test_case'
|
3
|
+
require 'rubygems/source'
|
4
|
+
|
5
|
+
class TestGemSourceSubpathProblem < Gem::TestCase
|
6
|
+
def tuple(*args)
|
7
|
+
Gem::NameTuple.new(*args)
|
8
|
+
end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
super
|
12
|
+
|
13
|
+
@gem_repo = "http://gems.example.com/private"
|
14
|
+
|
15
|
+
spec_fetcher
|
16
|
+
|
17
|
+
@source = Gem::Source.new(@gem_repo)
|
18
|
+
|
19
|
+
util_make_gems
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_dependency_resolver_set
|
23
|
+
response = Net::HTTPResponse.new '1.1', 200, 'OK'
|
24
|
+
response.uri = URI('http://example')
|
25
|
+
|
26
|
+
@fetcher.data["#{@gem_repo}/"] = response
|
27
|
+
|
28
|
+
set = @source.dependency_resolver_set
|
29
|
+
|
30
|
+
assert_kind_of Gem::Resolver::APISet, set
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_fetch_spec
|
34
|
+
@fetcher.data["#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] = Zlib::Deflate.deflate(Marshal.dump(@a1))
|
35
|
+
|
36
|
+
spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
|
37
|
+
assert_equal @a1.full_name, spec.full_name
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_load_specs
|
41
|
+
@fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([
|
42
|
+
Gem::NameTuple.new(@a1.name, @a1.version, 'ruby'),
|
43
|
+
Gem::NameTuple.new(@b2.name, @b2.version, 'ruby'),
|
44
|
+
]))
|
45
|
+
|
46
|
+
released = @source.load_specs(:latest).map {|spec| spec.full_name }
|
47
|
+
assert_equal %W[a-1 b-2], released
|
48
|
+
end
|
49
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'benchmark'
|
3
3
|
require 'rubygems/test_case'
|
4
|
+
require 'date'
|
4
5
|
require 'pathname'
|
5
6
|
require 'stringio'
|
6
7
|
require 'rubygems/ext'
|
@@ -1199,10 +1200,8 @@ dependencies: []
|
|
1199
1200
|
Gem.platforms = orig_platform
|
1200
1201
|
end
|
1201
1202
|
|
1202
|
-
DATA_PATH = File.expand_path "../data", __FILE__
|
1203
|
-
|
1204
1203
|
def test_handles_private_null_type
|
1205
|
-
path = File.
|
1204
|
+
path = File.expand_path "../data/null-type.gemspec.rz", __FILE__
|
1206
1205
|
|
1207
1206
|
data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
|
1208
1207
|
|
@@ -1999,7 +1998,7 @@ dependencies: []
|
|
1999
1998
|
test_cases = {
|
2000
1999
|
'i386-mswin32' => 'a-1-x86-mswin32-60',
|
2001
2000
|
'i386-mswin32_80' => 'a-1-x86-mswin32-80',
|
2002
|
-
'i386-mingw32' => 'a-1-x86-mingw32'
|
2001
|
+
'i386-mingw32' => 'a-1-x86-mingw32',
|
2003
2002
|
}
|
2004
2003
|
|
2005
2004
|
test_cases.each do |arch, expected|
|
@@ -3035,7 +3034,7 @@ Please report a bug if this causes problems.
|
|
3035
3034
|
specification.define_singleton_method(:find_all_by_name) do |dep_name|
|
3036
3035
|
[
|
3037
3036
|
specification.new {|s| s.name = "z", s.version = Gem::Version.new("1") },
|
3038
|
-
specification.new {|s| s.name = "z", s.version = Gem::Version.new("2") }
|
3037
|
+
specification.new {|s| s.name = "z", s.version = Gem::Version.new("2") },
|
3039
3038
|
]
|
3040
3039
|
end
|
3041
3040
|
|
@@ -3578,7 +3577,7 @@ Did you mean 'Ruby'?
|
|
3578
3577
|
"one" => "two",
|
3579
3578
|
"home" => "three",
|
3580
3579
|
"homepage_uri" => "https://example.com/user/repo",
|
3581
|
-
"funding_uri" => "https://example.com/donate"
|
3580
|
+
"funding_uri" => "https://example.com/donate",
|
3582
3581
|
}
|
3583
3582
|
end
|
3584
3583
|
|
@@ -3838,7 +3837,7 @@ end
|
|
3838
3837
|
|
3839
3838
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
3840
3839
|
nil, "default/gem.rb")
|
3841
|
-
spec_path = File.join(@
|
3840
|
+
spec_path = File.join(@gemhome, "specifications", "default", default_gem_spec.spec_name)
|
3842
3841
|
write_file(spec_path) do |file|
|
3843
3842
|
file.print(default_gem_spec.to_ruby)
|
3844
3843
|
end
|
@@ -177,7 +177,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
177
177
|
|
178
178
|
@spec.files += %w[lib/rubygems_plugin.rb]
|
179
179
|
|
180
|
-
Gem::Installer.at(Gem::Package.build(@spec)).install
|
180
|
+
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
181
181
|
|
182
182
|
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
183
183
|
assert File.exist?(plugin_path), 'plugin not written'
|
@@ -194,7 +194,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
194
194
|
|
195
195
|
@spec.files += %w[lib/rubygems_plugin.rb]
|
196
196
|
|
197
|
-
Gem::Installer.at(Gem::Package.build(@spec)).install
|
197
|
+
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
198
198
|
|
199
199
|
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
200
200
|
assert File.exist?(plugin_path), 'plugin not written'
|
@@ -212,7 +212,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
|
|
212
212
|
|
213
213
|
@spec.files += %w[lib/rubygems_plugin.rb]
|
214
214
|
|
215
|
-
Gem::Installer.at(Gem::Package.build(@spec)).install
|
215
|
+
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
216
216
|
|
217
217
|
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
218
218
|
assert File.exist?(plugin_path), 'plugin not written'
|
@@ -314,7 +314,7 @@ create_makefile '#{@spec.name}'
|
|
314
314
|
use_ui @ui do
|
315
315
|
path = Gem::Package.build @spec
|
316
316
|
|
317
|
-
installer = Gem::Installer.at path
|
317
|
+
installer = Gem::Installer.at path, :force => true
|
318
318
|
installer.install
|
319
319
|
end
|
320
320
|
|
@@ -633,19 +633,19 @@ create_makefile '#{@spec.name}'
|
|
633
633
|
plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
|
634
634
|
|
635
635
|
@spec.version = '1'
|
636
|
-
Gem::Installer.at(Gem::Package.build(@spec)).install
|
636
|
+
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
637
637
|
|
638
638
|
refute File.exist?(plugin_path), 'version without plugin installed, but plugin written'
|
639
639
|
|
640
640
|
@spec.files += %w[lib/rubygems_plugin.rb]
|
641
641
|
@spec.version = '2'
|
642
|
-
Gem::Installer.at(Gem::Package.build(@spec)).install
|
642
|
+
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
643
643
|
|
644
644
|
assert File.exist?(plugin_path), 'version with plugin installed, but plugin not written'
|
645
645
|
assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
|
646
646
|
|
647
647
|
@spec.version = '3'
|
648
|
-
Gem::Installer.at(Gem::Package.build(@spec)).install
|
648
|
+
Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
|
649
649
|
|
650
650
|
assert File.exist?(plugin_path), 'version with plugin installed, but plugin removed'
|
651
651
|
assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'old version installed, but plugin updated'
|
@@ -120,7 +120,7 @@ class TestGemRequire < Gem::TestCase
|
|
120
120
|
c1 = new_default_spec "c", "1", nil, "c/c.rb"
|
121
121
|
c2 = new_default_spec "c", "2", nil, "c/c.rb"
|
122
122
|
|
123
|
-
|
123
|
+
install_default_gems c1, c2, b1, a1
|
124
124
|
|
125
125
|
dir = Dir.mktmpdir("test_require", @tempdir)
|
126
126
|
dash_i_arg = File.join dir, 'lib'
|
@@ -405,8 +405,8 @@ class TestGemRequire < Gem::TestCase
|
|
405
405
|
|
406
406
|
# Remove an old default gem version directly from disk as if someone ran
|
407
407
|
# gem cleanup.
|
408
|
-
FileUtils.rm_rf(File.join @
|
409
|
-
FileUtils.rm_rf(File.join @
|
408
|
+
FileUtils.rm_rf(File.join @gemhome, "#{b1.full_name}")
|
409
|
+
FileUtils.rm_rf(File.join @gemhome, "specifications", "default", "#{b1.full_name}.gemspec")
|
410
410
|
|
411
411
|
# Require gems that have not been removed.
|
412
412
|
assert_require 'a/b'
|
@@ -433,7 +433,7 @@ class TestGemRequire < Gem::TestCase
|
|
433
433
|
def test_default_gem_only
|
434
434
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
435
435
|
nil, "default/gem.rb")
|
436
|
-
|
436
|
+
install_default_gems(default_gem_spec)
|
437
437
|
assert_require "default/gem"
|
438
438
|
assert_equal %w[default-2.0.0.0], loaded_spec_names
|
439
439
|
end
|
@@ -441,7 +441,7 @@ class TestGemRequire < Gem::TestCase
|
|
441
441
|
def test_default_gem_require_activates_just_once
|
442
442
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
443
443
|
nil, "default/gem.rb")
|
444
|
-
|
444
|
+
install_default_gems(default_gem_spec)
|
445
445
|
|
446
446
|
assert_require "default/gem"
|
447
447
|
|
@@ -506,7 +506,7 @@ class TestGemRequire < Gem::TestCase
|
|
506
506
|
def test_default_gem_and_normal_gem
|
507
507
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
508
508
|
nil, "default/gem.rb")
|
509
|
-
|
509
|
+
install_default_gems(default_gem_spec)
|
510
510
|
normal_gem_spec = util_spec("default", "3.0", nil,
|
511
511
|
"lib/default/gem.rb")
|
512
512
|
install_specs(normal_gem_spec)
|
@@ -544,11 +544,11 @@ class TestGemRequire < Gem::TestCase
|
|
544
544
|
def test_default_gem_prerelease
|
545
545
|
default_gem_spec = new_default_spec("default", "2.0.0",
|
546
546
|
nil, "default/gem.rb")
|
547
|
-
|
547
|
+
install_default_gems(default_gem_spec)
|
548
548
|
|
549
549
|
normal_gem_higher_prerelease_spec = util_spec("default", "3.0.0.rc2", nil,
|
550
550
|
"lib/default/gem.rb")
|
551
|
-
|
551
|
+
install_default_gems(normal_gem_higher_prerelease_spec)
|
552
552
|
|
553
553
|
assert_require "default/gem"
|
554
554
|
assert_equal %w[default-3.0.0.rc2], loaded_spec_names
|
@@ -586,7 +586,7 @@ class TestGemRequire < Gem::TestCase
|
|
586
586
|
def test_require_when_gem_defined
|
587
587
|
default_gem_spec = new_default_spec("default", "2.0.0.0",
|
588
588
|
nil, "default/gem.rb")
|
589
|
-
|
589
|
+
install_default_gems(default_gem_spec)
|
590
590
|
c = Class.new do
|
591
591
|
def self.gem(*args)
|
592
592
|
raise "received #gem with #{args.inspect}"
|
@@ -677,6 +677,47 @@ class TestGemRequire < Gem::TestCase
|
|
677
677
|
end
|
678
678
|
end
|
679
679
|
end
|
680
|
+
|
681
|
+
def test_no_crash_when_overriding_warn_with_warning_module
|
682
|
+
skip "https://github.com/oracle/truffleruby/issues/2109" if RUBY_ENGINE == "truffleruby"
|
683
|
+
|
684
|
+
Dir.mktmpdir("warn_test") do |dir|
|
685
|
+
File.write(dir + "/main.rb", "module Warning; def warn(str); super; end; end; warn 'Foo Bar'")
|
686
|
+
_, err = capture_subprocess_io do
|
687
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "main.rb")
|
688
|
+
end
|
689
|
+
assert_match(/Foo Bar\n$/, err)
|
690
|
+
_, err = capture_subprocess_io do
|
691
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "main.rb")
|
692
|
+
end
|
693
|
+
assert_match(/Foo Bar\n$/, err)
|
694
|
+
end
|
695
|
+
end
|
696
|
+
|
697
|
+
def test_expected_backtrace_location_when_inheriting_from_basic_object_and_including_kernel
|
698
|
+
Dir.mktmpdir("warn_test") do |dir|
|
699
|
+
File.write(dir + "/main.rb", "\nrequire 'sub'\n")
|
700
|
+
File.write(dir + "/sub.rb", <<-'RUBY')
|
701
|
+
require 'rubygems'
|
702
|
+
class C < BasicObject
|
703
|
+
include ::Kernel
|
704
|
+
def deprecated
|
705
|
+
warn "This is a deprecated method", uplevel: 2
|
706
|
+
end
|
707
|
+
end
|
708
|
+
C.new.deprecated
|
709
|
+
RUBY
|
710
|
+
|
711
|
+
_, err = capture_subprocess_io do
|
712
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--disable=gems", "-C", dir, "-I", dir, "main.rb")
|
713
|
+
end
|
714
|
+
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
715
|
+
_, err = capture_subprocess_io do
|
716
|
+
system(*ruby_with_rubygems_in_load_path, "-w", "--enable=gems", "-C", dir, "-I", dir, "main.rb")
|
717
|
+
end
|
718
|
+
assert_match(/main\.rb:2: warning: This is a deprecated method$/, err)
|
719
|
+
end
|
720
|
+
end
|
680
721
|
end
|
681
722
|
|
682
723
|
private
|