rubygems-update 3.2.32 → 3.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +154 -4
- data/CONTRIBUTING.md +40 -10
- data/Manifest.txt +11 -5
- data/POLICIES.md +22 -8
- data/README.md +9 -7
- data/UPGRADING.md +5 -81
- data/bin/gem +1 -6
- data/bundler/CHANGELOG.md +70 -0
- data/bundler/exe/bundle +7 -8
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +3 -2
- data/bundler/lib/bundler/cli/gem.rb +2 -1
- data/bundler/lib/bundler/cli/info.rb +6 -1
- data/bundler/lib/bundler/cli/install.rb +2 -0
- data/bundler/lib/bundler/cli/update.rb +2 -2
- data/bundler/lib/bundler/cli.rb +6 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +0 -5
- data/bundler/lib/bundler/definition.rb +29 -53
- data/bundler/lib/bundler/dependency.rb +5 -7
- data/bundler/lib/bundler/dsl.rb +18 -30
- data/bundler/lib/bundler/endpoint_specification.rb +0 -8
- data/bundler/lib/bundler/environment_preserver.rb +4 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +9 -4
- data/bundler/lib/bundler/fetcher.rb +2 -5
- data/bundler/lib/bundler/injector.rb +10 -1
- data/bundler/lib/bundler/installer/gem_installer.rb +1 -6
- data/bundler/lib/bundler/installer.rb +1 -4
- data/bundler/lib/bundler/lazy_specification.rb +17 -1
- data/bundler/lib/bundler/lockfile_parser.rb +10 -13
- data/bundler/lib/bundler/man/bundle-add.1 +10 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +7 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +3 -3
- data/bundler/lib/bundler/man/bundle-config.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +2 -2
- data/bundler/lib/bundler/man/bundle-install.1.ronn +2 -2
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +2 -2
- data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +28 -2
- data/bundler/lib/bundler/man/gemfile.5.ronn +9 -1
- data/bundler/lib/bundler/plugin/api/source.rb +1 -0
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +1 -13
- data/bundler/lib/bundler/resolver.rb +34 -31
- data/bundler/lib/bundler/rubygems_ext.rb +2 -0
- data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/bundler/lib/bundler/rubygems_integration.rb +11 -48
- data/bundler/lib/bundler/self_manager.rb +76 -0
- data/bundler/lib/bundler/shared_helpers.rb +4 -12
- data/bundler/lib/bundler/source/git/git_proxy.rb +2 -2
- data/bundler/lib/bundler/source/metadata.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +16 -12
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +7 -29
- data/bundler/lib/bundler/templates/Executable.bundler +1 -1
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/gems.rb +0 -3
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +10 -1
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/bundler/lib/bundler/ui/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +5 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +22 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +9 -3
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/bundler_version_finder.rb +10 -42
- data/lib/rubygems/command_manager.rb +4 -2
- data/lib/rubygems/commands/install_command.rb +5 -2
- data/lib/rubygems/commands/pristine_command.rb +8 -2
- data/lib/rubygems/commands/server_command.rb +14 -77
- data/lib/rubygems/commands/setup_command.rb +21 -22
- data/lib/rubygems/commands/update_command.rb +9 -4
- data/lib/rubygems/defaults.rb +2 -20
- data/lib/rubygems/dependency.rb +7 -7
- data/lib/rubygems/deprecate.rb +53 -6
- data/lib/rubygems/errors.rb +0 -3
- data/lib/rubygems/exceptions.rb +31 -1
- data/lib/rubygems/ext/builder.rb +5 -3
- data/lib/rubygems/install_update_options.rb +11 -2
- data/lib/rubygems/installer.rb +14 -12
- data/lib/rubygems/name_tuple.rb +2 -3
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/path_support.rb +1 -6
- data/lib/rubygems/platform.rb +4 -0
- data/lib/rubygems/remote_fetcher.rb +1 -1
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/installer_set.rb +1 -1
- data/lib/rubygems/security/policy.rb +1 -3
- data/lib/rubygems/security.rb +14 -7
- data/lib/rubygems/source.rb +3 -1
- data/lib/rubygems/spec_fetcher.rb +1 -1
- data/lib/rubygems/specification.rb +21 -21
- data/lib/rubygems/stub_specification.rb +1 -1
- data/lib/rubygems/text.rb +21 -20
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/uninstaller.rb +4 -1
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/version.rb +2 -0
- data/lib/rubygems.rb +48 -56
- data/rubygems-update.gemspec +1 -1
- data/setup.rb +1 -6
- data/test/rubygems/helper.rb +20 -6
- data/test/rubygems/test_config.rb +2 -2
- data/test/rubygems/test_exit.rb +11 -0
- data/test/rubygems/test_gem.rb +46 -76
- data/test/rubygems/test_gem_bundler_version_finder.rb +22 -43
- data/test/rubygems/test_gem_command_manager.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +33 -0
- data/test/rubygems/test_gem_commands_open_command.rb +1 -1
- data/test/rubygems/test_gem_commands_server_command.rb +4 -46
- data/test/rubygems/test_gem_commands_setup_command.rb +17 -0
- data/test/rubygems/test_gem_commands_update_command.rb +2 -2
- data/test/rubygems/test_gem_dependency.rb +4 -8
- data/test/rubygems/test_gem_installer.rb +10 -5
- data/test/rubygems/test_gem_path_support.rb +2 -6
- data/test/rubygems/test_gem_remote_fetcher.rb +15 -0
- data/test/rubygems/test_gem_requirement.rb +0 -1
- data/test/rubygems/test_gem_security.rb +1 -1
- data/test/rubygems/test_gem_specification.rb +16 -25
- data/test/rubygems/test_gem_stream_ui.rb +1 -1
- data/test/rubygems/test_gem_text.rb +6 -0
- data/test/rubygems/test_kernel.rb +1 -13
- data/test/rubygems/test_project_sanity.rb +1 -1
- data/test/rubygems/test_require.rb +4 -58
- data/test/rubygems/test_rubygems.rb +23 -0
- metadata +14 -8
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/lib/rubygems/server.rb +0 -882
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/test_gem_server.rb +0 -608
@@ -9,53 +9,11 @@ class TestGemCommandsServerCommand < Gem::TestCase
|
|
9
9
|
@cmd = Gem::Commands::ServerCommand.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@
|
14
|
-
|
15
|
-
assert_equal false, @cmd.options[:daemon]
|
16
|
-
assert_equal [], @cmd.options[:gemdir]
|
17
|
-
assert_equal 8808, @cmd.options[:port]
|
18
|
-
|
19
|
-
@cmd.send :handle_options, %w[-p 9999 -d /nonexistent --daemon]
|
20
|
-
|
21
|
-
assert_equal true, @cmd.options[:daemon]
|
22
|
-
assert_equal [File.expand_path('/nonexistent')], @cmd.options[:gemdir]
|
23
|
-
assert_equal 9999, @cmd.options[:port]
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_handle_options_gemdir
|
27
|
-
@cmd.send :handle_options, %w[--dir a --dir b]
|
28
|
-
|
29
|
-
assert_equal [File.expand_path('a'), File.expand_path('b')],
|
30
|
-
@cmd.options[:gemdir]
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_handle_options_port
|
34
|
-
@cmd.send :handle_options, %w[-p 0]
|
35
|
-
assert_equal 0, @cmd.options[:port]
|
36
|
-
|
37
|
-
@cmd.send :handle_options, %w[-p 65535]
|
38
|
-
assert_equal 65535, @cmd.options[:port]
|
39
|
-
|
40
|
-
begin
|
41
|
-
@cmd.send :handle_options, %w[-p discard]
|
42
|
-
assert_equal 9, @cmd.options[:port]
|
43
|
-
rescue Gem::OptionParser::InvalidArgument
|
44
|
-
# for container environment on GitHub Actions
|
45
|
-
end
|
46
|
-
|
47
|
-
e = assert_raise Gem::OptionParser::InvalidArgument do
|
48
|
-
@cmd.send :handle_options, %w[-p nonexistent]
|
49
|
-
end
|
50
|
-
|
51
|
-
assert_equal 'invalid argument: -p nonexistent: no such named service',
|
52
|
-
e.message
|
53
|
-
|
54
|
-
e = assert_raise Gem::OptionParser::InvalidArgument do
|
55
|
-
@cmd.send :handle_options, %w[-p 65536]
|
12
|
+
def test_execute
|
13
|
+
use_ui @ui do
|
14
|
+
@cmd.execute
|
56
15
|
end
|
57
16
|
|
58
|
-
|
59
|
-
e.message
|
17
|
+
assert_match %r{Install the rubygems-server}i, @ui.error
|
60
18
|
end
|
61
19
|
end
|
@@ -156,6 +156,21 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
156
156
|
assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_bin_path)
|
157
157
|
end
|
158
158
|
|
159
|
+
def test_destdir_flag_does_not_try_to_write_to_the_default_gem_home
|
160
|
+
FileUtils.chmod "-w", File.join(@gemhome, "plugins")
|
161
|
+
|
162
|
+
destdir = File.join(@tempdir, 'foo')
|
163
|
+
|
164
|
+
@cmd.options[:destdir] = destdir
|
165
|
+
@cmd.execute
|
166
|
+
|
167
|
+
spec = Gem::Specification.load("bundler/bundler.gemspec")
|
168
|
+
|
169
|
+
spec.executables.each do |e|
|
170
|
+
assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
159
174
|
def test_files_in
|
160
175
|
assert_equal %w[rubygems.rb rubygems/requirement.rb rubygems/ssl_certs/rubygems.org/foo.pem],
|
161
176
|
@cmd.files_in('lib').sort
|
@@ -245,6 +260,8 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|
245
260
|
def test_install_default_bundler_gem_with_destdir_flag
|
246
261
|
@cmd.extend FileUtils
|
247
262
|
|
263
|
+
FileUtils.chmod "-w", @gemhome
|
264
|
+
|
248
265
|
destdir = File.join(@tempdir, 'foo')
|
249
266
|
bin_dir = File.join(destdir, 'bin')
|
250
267
|
|
@@ -579,7 +579,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
579
579
|
|
580
580
|
expected = {
|
581
581
|
:args => [],
|
582
|
-
:document => %w[
|
582
|
+
:document => %w[ri],
|
583
583
|
:force => false,
|
584
584
|
:system => true,
|
585
585
|
}
|
@@ -598,7 +598,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
|
598
598
|
|
599
599
|
expected = {
|
600
600
|
:args => [],
|
601
|
-
:document => %w[
|
601
|
+
:document => %w[ri],
|
602
602
|
:force => false,
|
603
603
|
:system => "1.3.7",
|
604
604
|
}
|
@@ -358,16 +358,12 @@ class TestGemDependency < Gem::TestCase
|
|
358
358
|
|
359
359
|
assert_equal [b, b_1], dep.to_specs
|
360
360
|
|
361
|
-
Gem::BundlerVersionFinder.stub(:
|
362
|
-
|
363
|
-
dep.to_specs
|
364
|
-
end
|
365
|
-
|
366
|
-
assert_match "Could not find 'bundler' (3.5) required by reason.\nTo update to the latest version installed on your system, run `bundle update --bundler`.\nTo install the missing version, run `gem install bundler:3.5`\n", e.message
|
361
|
+
Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("1")) do
|
362
|
+
assert_equal [b_1, b], dep.to_specs
|
367
363
|
end
|
368
364
|
|
369
|
-
Gem::BundlerVersionFinder.stub(:
|
370
|
-
assert_equal [b], dep.to_specs
|
365
|
+
Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("2.0.0.pre.1")) do
|
366
|
+
assert_equal [b, b_1], dep.to_specs
|
371
367
|
end
|
372
368
|
end
|
373
369
|
|
@@ -948,7 +948,6 @@ gem 'other', version
|
|
948
948
|
|
949
949
|
Gem.pre_install do
|
950
950
|
assert_path_not_exist cache_file, 'cache file must not exist yet'
|
951
|
-
assert_path_not_exist spec_file, 'spec file must not exist yet'
|
952
951
|
true
|
953
952
|
end
|
954
953
|
|
@@ -956,13 +955,11 @@ gem 'other', version
|
|
956
955
|
assert_path_exist gemdir, 'gem install dir must exist'
|
957
956
|
assert_path_exist rakefile, 'gem executable must exist'
|
958
957
|
assert_path_not_exist stub_exe, 'gem executable must not exist'
|
959
|
-
assert_path_not_exist spec_file, 'spec file must not exist yet'
|
960
958
|
true
|
961
959
|
end
|
962
960
|
|
963
961
|
Gem.post_install do
|
964
962
|
assert_path_exist cache_file, 'cache file must exist'
|
965
|
-
assert_path_exist spec_file, 'spec file must exist'
|
966
963
|
end
|
967
964
|
|
968
965
|
@newspec = nil
|
@@ -1237,7 +1234,11 @@ gem 'other', version
|
|
1237
1234
|
end
|
1238
1235
|
|
1239
1236
|
def test_install_post_build_false
|
1240
|
-
|
1237
|
+
@spec = util_spec 'a'
|
1238
|
+
|
1239
|
+
util_build_gem @spec
|
1240
|
+
|
1241
|
+
installer = util_installer @spec, @gemhome
|
1241
1242
|
|
1242
1243
|
Gem.post_build do
|
1243
1244
|
false
|
@@ -1279,7 +1280,11 @@ gem 'other', version
|
|
1279
1280
|
end
|
1280
1281
|
|
1281
1282
|
def test_install_pre_install_false
|
1282
|
-
|
1283
|
+
@spec = util_spec 'a'
|
1284
|
+
|
1285
|
+
util_build_gem @spec
|
1286
|
+
|
1287
|
+
installer = util_installer @spec, @gemhome
|
1283
1288
|
|
1284
1289
|
Gem.pre_install do
|
1285
1290
|
false
|
@@ -16,7 +16,7 @@ class TestGemPathSupport < Gem::TestCase
|
|
16
16
|
|
17
17
|
assert_equal ENV["GEM_HOME"], ps.home
|
18
18
|
|
19
|
-
expected =
|
19
|
+
expected = ENV["GEM_PATH"].split(File::PATH_SEPARATOR)
|
20
20
|
assert_equal expected, ps.path, "defaults to GEM_PATH"
|
21
21
|
end
|
22
22
|
|
@@ -25,7 +25,7 @@ class TestGemPathSupport < Gem::TestCase
|
|
25
25
|
|
26
26
|
assert_equal File.join(@tempdir, "foo"), ps.home
|
27
27
|
|
28
|
-
expected =
|
28
|
+
expected = ENV["GEM_PATH"].split(File::PATH_SEPARATOR) + [File.join(@tempdir, 'foo')]
|
29
29
|
assert_equal expected, ps.path
|
30
30
|
end
|
31
31
|
|
@@ -102,10 +102,6 @@ class TestGemPathSupport < Gem::TestCase
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
def util_path
|
106
|
-
ENV["GEM_PATH"].split(File::PATH_SEPARATOR)
|
107
|
-
end
|
108
|
-
|
109
105
|
def test_initialize_spec
|
110
106
|
ENV["GEM_SPEC_CACHE"] = nil
|
111
107
|
|
@@ -173,6 +173,21 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
173
173
|
assert_equal 'hello', File.read(path)
|
174
174
|
end
|
175
175
|
|
176
|
+
def test_cache_update_path_with_utf8_internal_encoding
|
177
|
+
with_internal_encoding('UTF-8') do
|
178
|
+
uri = URI 'http://example/file'
|
179
|
+
path = File.join @tempdir, 'file'
|
180
|
+
data = String.new("\xC8").force_encoding(Encoding::BINARY)
|
181
|
+
|
182
|
+
fetcher = util_fuck_with_fetcher data
|
183
|
+
|
184
|
+
written_data = fetcher.cache_update_path uri, path
|
185
|
+
|
186
|
+
assert_equal data, written_data
|
187
|
+
assert_equal data, File.binread(path)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
176
191
|
def test_cache_update_path_no_update
|
177
192
|
uri = URI 'http://example/file'
|
178
193
|
path = File.join @tempdir, 'file'
|
@@ -253,7 +253,6 @@ class TestGemRequirement < Gem::TestCase
|
|
253
253
|
assert_satisfied_by "1.0.0.0", "= 1.0"
|
254
254
|
assert_satisfied_by "10.3.2", "!= 9.3.4"
|
255
255
|
assert_satisfied_by "10.3.2", "> 9.3.2"
|
256
|
-
assert_satisfied_by "10.3.2", "> 9.3.2"
|
257
256
|
assert_satisfied_by " 9.3.2", ">= 9.3.2"
|
258
257
|
assert_satisfied_by "9.3.2 ", ">= 9.3.2"
|
259
258
|
assert_satisfied_by "", "= 0"
|
@@ -196,7 +196,7 @@ class TestGemSecurity < Gem::TestCase
|
|
196
196
|
|
197
197
|
def test_class_sign
|
198
198
|
issuer = PUBLIC_CERT.subject
|
199
|
-
signee = OpenSSL::X509::Name.
|
199
|
+
signee = OpenSSL::X509::Name.new([["CN", "signee"], ["DC", "example"]])
|
200
200
|
|
201
201
|
key = PRIVATE_KEY
|
202
202
|
cert = OpenSSL::X509::Certificate.new
|
@@ -147,6 +147,7 @@ end
|
|
147
147
|
end
|
148
148
|
|
149
149
|
def test_find_in_unresolved_tree_is_not_exponentiental
|
150
|
+
pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE == 'truffleruby'
|
150
151
|
num_of_pkg = 7
|
151
152
|
num_of_version_per_pkg = 3
|
152
153
|
packages = (0..num_of_pkg).map do |pkgi|
|
@@ -873,24 +874,21 @@ dependencies: []
|
|
873
874
|
end
|
874
875
|
|
875
876
|
def test_self_load_utf8_with_ascii_encoding
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
io.write spec2.to_ruby_for_cache.force_encoding('BINARY').sub("\\u{5678}", bin.force_encoding('BINARY'))
|
885
|
-
end
|
877
|
+
with_internal_encoding('US-ASCII') do
|
878
|
+
spec2 = @a2.dup
|
879
|
+
bin = "\u5678".dup
|
880
|
+
spec2.authors = [bin]
|
881
|
+
full_path = spec2.spec_file
|
882
|
+
write_file full_path do |io|
|
883
|
+
io.write spec2.to_ruby_for_cache.force_encoding('BINARY').sub("\\u{5678}", bin.force_encoding('BINARY'))
|
884
|
+
end
|
886
885
|
|
887
|
-
|
886
|
+
spec = Gem::Specification.load full_path
|
888
887
|
|
889
|
-
|
888
|
+
spec2.files.clear
|
890
889
|
|
891
|
-
|
892
|
-
|
893
|
-
silence_warnings { Encoding.default_internal = int_enc }
|
890
|
+
assert_equal spec2, spec
|
891
|
+
end
|
894
892
|
end
|
895
893
|
|
896
894
|
def test_self_load_legacy_ruby
|
@@ -944,7 +942,7 @@ dependencies: []
|
|
944
942
|
end
|
945
943
|
|
946
944
|
def test_self_outdated_and_latest_remotes
|
947
|
-
|
945
|
+
spec_fetcher do |fetcher|
|
948
946
|
fetcher.download 'a', 4
|
949
947
|
fetcher.download 'b', 3
|
950
948
|
|
@@ -953,8 +951,8 @@ dependencies: []
|
|
953
951
|
end
|
954
952
|
|
955
953
|
expected = [
|
956
|
-
[
|
957
|
-
[
|
954
|
+
[Gem::Specification.stubs.find {|s| s.full_name == 'a-3.a' }, v(4)],
|
955
|
+
[Gem::Specification.stubs.find {|s| s.full_name == 'b-2' }, v(3)],
|
958
956
|
]
|
959
957
|
|
960
958
|
assert_equal expected, Gem::Specification.outdated_and_latest_version.to_a
|
@@ -3745,11 +3743,4 @@ end
|
|
3745
3743
|
end
|
3746
3744
|
end
|
3747
3745
|
end
|
3748
|
-
|
3749
|
-
def silence_warnings
|
3750
|
-
old_verbose, $VERBOSE = $VERBOSE, false
|
3751
|
-
yield
|
3752
|
-
ensure
|
3753
|
-
$VERBOSE = old_verbose
|
3754
|
-
end
|
3755
3746
|
end
|
@@ -5,7 +5,7 @@ require 'timeout'
|
|
5
5
|
|
6
6
|
class TestGemStreamUI < Gem::TestCase
|
7
7
|
# increase timeout with MJIT for --jit-wait testing
|
8
|
-
mjit_enabled = defined?(RubyVM::
|
8
|
+
mjit_enabled = defined?(RubyVM::MJIT) ? RubyVM::MJIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
|
9
9
|
SHORT_TIMEOUT = (RUBY_ENGINE == "ruby" && !mjit_enabled) ? 0.1 : 1.0
|
10
10
|
|
11
11
|
module IsTty
|
@@ -83,6 +83,12 @@ Without the wrapping, the text might not look good in the RSS feed.
|
|
83
83
|
assert_equal 7, levenshtein_distance("zentest", "xxxxxxx")
|
84
84
|
end
|
85
85
|
|
86
|
+
def test_levenshtein_distance_all
|
87
|
+
assert_equal 6, levenshtein_distance("algorithm", "altruistic")
|
88
|
+
assert_equal 3, levenshtein_distance("saturday", "sunday")
|
89
|
+
assert_equal 3, levenshtein_distance("kitten", "sitting")
|
90
|
+
end
|
91
|
+
|
86
92
|
def test_truncate_text
|
87
93
|
assert_equal "abc", truncate_text("abc", "desc")
|
88
94
|
assert_equal "Truncating desc to 2 characters:\nab", truncate_text("abc", "desc", 2)
|
@@ -117,20 +117,8 @@ class TestKernel < Gem::TestCase
|
|
117
117
|
assert $:.any? {|p| %r{bundler-1/lib} =~ p }
|
118
118
|
end
|
119
119
|
|
120
|
-
def test_gem_bundler_missing_bundler_version
|
121
|
-
Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["55", "reason"]) do
|
122
|
-
quick_gem 'bundler', '1'
|
123
|
-
quick_gem 'bundler', '2.a'
|
124
|
-
|
125
|
-
e = assert_raise Gem::MissingSpecVersionError do
|
126
|
-
gem('bundler')
|
127
|
-
end
|
128
|
-
assert_match "Could not find 'bundler' (55) required by reason.", e.message
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
120
|
def test_gem_bundler_inferred_bundler_version
|
133
|
-
Gem::BundlerVersionFinder.stub(:
|
121
|
+
Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("1")) do
|
134
122
|
quick_gem 'bundler', '1'
|
135
123
|
quick_gem 'bundler', '2.a'
|
136
124
|
|
@@ -13,7 +13,7 @@ class TestProjectSanity < Gem::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_require_rubygems_package
|
16
|
-
err, status = Open3.capture2e(*ruby_with_rubygems_in_load_path, "--disable-gems", "-e", "
|
16
|
+
err, status = Open3.capture2e(*ruby_with_rubygems_in_load_path, "--disable-gems", "-e", "require \"rubygems/package\"")
|
17
17
|
|
18
18
|
assert status.success?, err
|
19
19
|
end
|
@@ -24,16 +24,6 @@ class TestGemRequire < Gem::TestCase
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def setup
|
28
|
-
super
|
29
|
-
|
30
|
-
@old_loaded_features = $LOADED_FEATURES.dup
|
31
|
-
assert_raise LoadError do
|
32
|
-
require 'test_gem_require_a'
|
33
|
-
end
|
34
|
-
$LOADED_FEATURES.replace @old_loaded_features
|
35
|
-
end
|
36
|
-
|
37
27
|
def assert_require(path)
|
38
28
|
assert require(path), "'#{path}' was already required"
|
39
29
|
end
|
@@ -88,8 +78,6 @@ class TestGemRequire < Gem::TestCase
|
|
88
78
|
FileUtils.mkdir_p File.dirname c_rb
|
89
79
|
File.open(c_rb, 'w') {|f| f.write "class Object; HELLO = 'world' end" }
|
90
80
|
|
91
|
-
lp = $LOAD_PATH.dup
|
92
|
-
|
93
81
|
# Pretend to provide a commandline argument that overrides a file in gem b
|
94
82
|
$LOAD_PATH.unshift dash_i_arg
|
95
83
|
|
@@ -98,7 +86,6 @@ class TestGemRequire < Gem::TestCase
|
|
98
86
|
assert_equal "world", ::Object::HELLO
|
99
87
|
assert_equal %w[a-1 b-1], loaded_spec_names
|
100
88
|
ensure
|
101
|
-
$LOAD_PATH.replace lp
|
102
89
|
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
103
90
|
end
|
104
91
|
|
@@ -132,8 +119,6 @@ class TestGemRequire < Gem::TestCase
|
|
132
119
|
|
133
120
|
assert_require 'test_gem_require_a'
|
134
121
|
|
135
|
-
lp = $LOAD_PATH.dup
|
136
|
-
|
137
122
|
# Pretend to provide a commandline argument that overrides a file in gem b
|
138
123
|
$LOAD_PATH.unshift dash_i_arg
|
139
124
|
|
@@ -142,7 +127,6 @@ class TestGemRequire < Gem::TestCase
|
|
142
127
|
assert_equal "world", ::Object::HELLO
|
143
128
|
assert_equal %w[a-1 b-1], loaded_spec_names
|
144
129
|
ensure
|
145
|
-
$LOAD_PATH.replace lp
|
146
130
|
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
147
131
|
end
|
148
132
|
|
@@ -153,16 +137,10 @@ class TestGemRequire < Gem::TestCase
|
|
153
137
|
dash_i_ext_arg = util_install_extension_file('a')
|
154
138
|
dash_i_lib_arg = util_install_ruby_file('a')
|
155
139
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
$LOAD_PATH.unshift dash_i_ext_arg
|
161
|
-
assert_require 'a'
|
162
|
-
assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
163
|
-
ensure
|
164
|
-
$LOAD_PATH.replace lp
|
165
|
-
end
|
140
|
+
$LOAD_PATH.unshift dash_i_lib_arg
|
141
|
+
$LOAD_PATH.unshift dash_i_ext_arg
|
142
|
+
assert_require 'a'
|
143
|
+
assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
166
144
|
end
|
167
145
|
|
168
146
|
def test_concurrent_require
|
@@ -618,31 +596,6 @@ class TestGemRequire < Gem::TestCase
|
|
618
596
|
assert_empty unresolved_names
|
619
597
|
end
|
620
598
|
|
621
|
-
def test_require_bundler_missing_bundler_version
|
622
|
-
Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["55", "reason"]) do
|
623
|
-
b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
|
624
|
-
b2a = util_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
|
625
|
-
install_specs b1, b2a
|
626
|
-
|
627
|
-
e = assert_raise Gem::MissingSpecVersionError do
|
628
|
-
gem('bundler')
|
629
|
-
end
|
630
|
-
assert_match "Could not find 'bundler' (55) required by reason.", e.message
|
631
|
-
end
|
632
|
-
end
|
633
|
-
|
634
|
-
def test_require_bundler_with_bundler_version
|
635
|
-
Gem::BundlerVersionFinder.stub(:bundler_version_with_reason, ["1", "reason"]) do
|
636
|
-
b1 = util_spec('bundler', '1.999999999', nil, "lib/bundler/setup.rb")
|
637
|
-
b2 = util_spec('bundler', '2', nil, "lib/bundler/setup.rb")
|
638
|
-
install_specs b1, b2
|
639
|
-
|
640
|
-
$:.clear
|
641
|
-
assert_require 'bundler/setup'
|
642
|
-
assert_equal %w[bundler-1.999999999], loaded_spec_names
|
643
|
-
end
|
644
|
-
end
|
645
|
-
|
646
599
|
# uplevel is 2.5+ only
|
647
600
|
if RUBY_VERSION >= "2.5"
|
648
601
|
["", "Kernel."].each do |prefix|
|
@@ -722,13 +675,6 @@ class TestGemRequire < Gem::TestCase
|
|
722
675
|
!ENV["GEM_COMMAND"].nil?
|
723
676
|
end
|
724
677
|
|
725
|
-
def silence_warnings
|
726
|
-
old_verbose, $VERBOSE = $VERBOSE, false
|
727
|
-
yield
|
728
|
-
ensure
|
729
|
-
$VERBOSE = old_verbose
|
730
|
-
end
|
731
|
-
|
732
678
|
def util_install_extension_file(name)
|
733
679
|
spec = quick_gem name
|
734
680
|
util_build_gem spec
|
@@ -22,6 +22,29 @@ class GemTest < Gem::TestCase
|
|
22
22
|
"the problem and ask for help."
|
23
23
|
end
|
24
24
|
|
25
|
+
def test_operating_system_customizing_default_dir
|
26
|
+
pend "does not apply to truffleruby" if RUBY_ENGINE == 'truffleruby'
|
27
|
+
pend "loads a custom defaults/jruby file that gets in the middle" if RUBY_ENGINE == 'jruby'
|
28
|
+
|
29
|
+
# On a non existing default dir, there should be no gems
|
30
|
+
|
31
|
+
path = util_install_operating_system_rb <<-RUBY
|
32
|
+
module Gem
|
33
|
+
def self.default_dir
|
34
|
+
File.expand_path("foo")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
RUBY
|
38
|
+
|
39
|
+
output = Gem::Util.popen(
|
40
|
+
*ruby_with_rubygems_and_fake_operating_system_in_load_path(path),
|
41
|
+
'-e',
|
42
|
+
"require \"rubygems\"; puts Gem::Specification.stubs.map(&:full_name)",
|
43
|
+
{:err => [:child, :out]}
|
44
|
+
).strip
|
45
|
+
assert_empty output
|
46
|
+
end
|
47
|
+
|
25
48
|
private
|
26
49
|
|
27
50
|
def util_install_operating_system_rb(content)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubygems-update
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2
|
4
|
+
version: 3.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Weirich
|
@@ -16,7 +16,7 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date: 2021-
|
19
|
+
date: 2021-12-24 00:00:00.000000000 Z
|
20
20
|
dependencies: []
|
21
21
|
description: |-
|
22
22
|
A package (also known as a library) contains a set of functionality
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- bundler/exe/bundle
|
75
75
|
- bundler/exe/bundler
|
76
76
|
- bundler/lib/bundler.rb
|
77
|
+
- bundler/lib/bundler/.document
|
77
78
|
- bundler/lib/bundler/build_metadata.rb
|
78
79
|
- bundler/lib/bundler/capistrano.rb
|
79
80
|
- bundler/lib/bundler/cli.rb
|
@@ -134,7 +135,6 @@ files:
|
|
134
135
|
- bundler/lib/bundler/gem_helpers.rb
|
135
136
|
- bundler/lib/bundler/gem_tasks.rb
|
136
137
|
- bundler/lib/bundler/gem_version_promoter.rb
|
137
|
-
- bundler/lib/bundler/gemdeps.rb
|
138
138
|
- bundler/lib/bundler/graph.rb
|
139
139
|
- bundler/lib/bundler/index.rb
|
140
140
|
- bundler/lib/bundler/injector.rb
|
@@ -222,6 +222,7 @@ files:
|
|
222
222
|
- bundler/lib/bundler/rubygems_gem_installer.rb
|
223
223
|
- bundler/lib/bundler/rubygems_integration.rb
|
224
224
|
- bundler/lib/bundler/runtime.rb
|
225
|
+
- bundler/lib/bundler/self_manager.rb
|
225
226
|
- bundler/lib/bundler/settings.rb
|
226
227
|
- bundler/lib/bundler/settings/validator.rb
|
227
228
|
- bundler/lib/bundler/setup.rb
|
@@ -268,11 +269,12 @@ files:
|
|
268
269
|
- bundler/lib/bundler/templates/newgem/newgem.gemspec.tt
|
269
270
|
- bundler/lib/bundler/templates/newgem/rspec.tt
|
270
271
|
- bundler/lib/bundler/templates/newgem/rubocop.yml.tt
|
272
|
+
- bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt
|
271
273
|
- bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt
|
272
274
|
- bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt
|
273
275
|
- bundler/lib/bundler/templates/newgem/standard.yml.tt
|
274
|
-
- bundler/lib/bundler/templates/newgem/test/minitest/newgem_test.rb.tt
|
275
276
|
- bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt
|
277
|
+
- bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt
|
276
278
|
- bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt
|
277
279
|
- bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt
|
278
280
|
- bundler/lib/bundler/templates/newgem/travis.yml.tt
|
@@ -281,6 +283,7 @@ files:
|
|
281
283
|
- bundler/lib/bundler/ui/shell.rb
|
282
284
|
- bundler/lib/bundler/ui/silent.rb
|
283
285
|
- bundler/lib/bundler/uri_credentials_filter.rb
|
286
|
+
- bundler/lib/bundler/vendor/.document
|
284
287
|
- bundler/lib/bundler/vendor/connection_pool/LICENSE
|
285
288
|
- bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
|
286
289
|
- bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
|
@@ -363,6 +366,8 @@ files:
|
|
363
366
|
- bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
|
364
367
|
- bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
|
365
368
|
- bundler/lib/bundler/vendor/uri/lib/uri/version.rb
|
369
|
+
- bundler/lib/bundler/vendor/uri/lib/uri/ws.rb
|
370
|
+
- bundler/lib/bundler/vendor/uri/lib/uri/wss.rb
|
366
371
|
- bundler/lib/bundler/vendored_fileutils.rb
|
367
372
|
- bundler/lib/bundler/vendored_molinillo.rb
|
368
373
|
- bundler/lib/bundler/vendored_persistent.rb
|
@@ -451,6 +456,7 @@ files:
|
|
451
456
|
- lib/rubygems/name_tuple.rb
|
452
457
|
- lib/rubygems/openssl.rb
|
453
458
|
- lib/rubygems/optparse.rb
|
459
|
+
- lib/rubygems/optparse/.document
|
454
460
|
- lib/rubygems/optparse/COPYING
|
455
461
|
- lib/rubygems/optparse/lib/optionparser.rb
|
456
462
|
- lib/rubygems/optparse/lib/optparse.rb
|
@@ -546,7 +552,6 @@ files:
|
|
546
552
|
- lib/rubygems/security/signer.rb
|
547
553
|
- lib/rubygems/security/trust_dir.rb
|
548
554
|
- lib/rubygems/security_option.rb
|
549
|
-
- lib/rubygems/server.rb
|
550
555
|
- lib/rubygems/source.rb
|
551
556
|
- lib/rubygems/source/git.rb
|
552
557
|
- lib/rubygems/source/installed.rb
|
@@ -564,9 +569,11 @@ files:
|
|
564
569
|
- lib/rubygems/stub_specification.rb
|
565
570
|
- lib/rubygems/text.rb
|
566
571
|
- lib/rubygems/tsort.rb
|
572
|
+
- lib/rubygems/tsort/.document
|
567
573
|
- lib/rubygems/tsort/LICENSE.txt
|
568
574
|
- lib/rubygems/tsort/lib/tsort.rb
|
569
575
|
- lib/rubygems/uninstaller.rb
|
576
|
+
- lib/rubygems/unknown_command_spell_checker.rb
|
570
577
|
- lib/rubygems/uri.rb
|
571
578
|
- lib/rubygems/uri_formatter.rb
|
572
579
|
- lib/rubygems/user_interaction.rb
|
@@ -582,7 +589,6 @@ files:
|
|
582
589
|
- test/rubygems/alternate_cert_32.pem
|
583
590
|
- test/rubygems/alternate_key.pem
|
584
591
|
- test/rubygems/bad_rake.rb
|
585
|
-
- test/rubygems/bogussources.rb
|
586
592
|
- test/rubygems/ca_cert.pem
|
587
593
|
- test/rubygems/child_cert.pem
|
588
594
|
- test/rubygems/child_cert_32.pem
|
@@ -639,6 +645,7 @@ files:
|
|
639
645
|
- test/rubygems/test_bundled_ca.rb
|
640
646
|
- test/rubygems/test_config.rb
|
641
647
|
- test/rubygems/test_deprecate.rb
|
648
|
+
- test/rubygems/test_exit.rb
|
642
649
|
- test/rubygems/test_gem.rb
|
643
650
|
- test/rubygems/test_gem_available_set.rb
|
644
651
|
- test/rubygems/test_gem_bundler_version_finder.rb
|
@@ -741,7 +748,6 @@ files:
|
|
741
748
|
- test/rubygems/test_gem_security_policy.rb
|
742
749
|
- test/rubygems/test_gem_security_signer.rb
|
743
750
|
- test/rubygems/test_gem_security_trust_dir.rb
|
744
|
-
- test/rubygems/test_gem_server.rb
|
745
751
|
- test/rubygems/test_gem_silent_ui.rb
|
746
752
|
- test/rubygems/test_gem_source.rb
|
747
753
|
- test/rubygems/test_gem_source_fetch_problem.rb
|
@@ -798,7 +804,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
798
804
|
- !ruby/object:Gem::Version
|
799
805
|
version: '0'
|
800
806
|
requirements: []
|
801
|
-
rubygems_version: 3.2
|
807
|
+
rubygems_version: 3.3.2
|
802
808
|
signing_key:
|
803
809
|
specification_version: 4
|
804
810
|
summary: RubyGems is a package management framework for Ruby.
|