rubygems-update 3.2.33 → 3.2.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- 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 +1 -2
- 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/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/commands/server_command.rb +1 -1
- data/lib/rubygems/deprecate.rb +2 -2
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/specification.rb +2 -0
- data/lib/rubygems.rb +24 -21
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/test_gem_command_manager.rb +25 -0
- data/test/rubygems/test_gem_source_git.rb +5 -0
- data/test/rubygems/test_rubygems.rb +23 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8c702a4165527b22d31e1cb41e0e5bc94e75428b2a69a48f5e4565df627e885
|
4
|
+
data.tar.gz: 2dd36e7a22f82691fe39d1384d37270843bf6705b929e92e8d6d501af21db430
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f77785a6aac66c4e68e2f73b794c0d642cf8a962192ece73fd6e208c79ec1c29a6e824cb065c40f25b97c06aa5feb827efe8ce4419d2d103843758ae7514b378
|
7
|
+
data.tar.gz: b90468d920c7f6ea3217858d74ebfa2fe7e162f7408cb61987284e381f4d91d6e258d574c7f8cbc70a429b872521c50f26a92db48a3dee5394a70534acddb848
|
@@ -4,8 +4,8 @@ module Bundler
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
5
5
|
module BuildMetadata
|
6
6
|
# begin ivars
|
7
|
-
@built_at = "
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2023-02-06".freeze
|
8
|
+
@git_commit_sha = "c07c26df9e".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
@@ -210,9 +210,9 @@ class Bundler::Thor
|
|
210
210
|
#
|
211
211
|
# ==== Examples
|
212
212
|
#
|
213
|
-
# inject_into_class "app/controllers/application_controller.rb", ApplicationController, " filter_parameter :password\n"
|
213
|
+
# inject_into_class "app/controllers/application_controller.rb", "ApplicationController", " filter_parameter :password\n"
|
214
214
|
#
|
215
|
-
# inject_into_class "app/controllers/application_controller.rb", ApplicationController do
|
215
|
+
# inject_into_class "app/controllers/application_controller.rb", "ApplicationController" do
|
216
216
|
# " filter_parameter :password\n"
|
217
217
|
# end
|
218
218
|
#
|
@@ -233,9 +233,9 @@ class Bundler::Thor
|
|
233
233
|
#
|
234
234
|
# ==== Examples
|
235
235
|
#
|
236
|
-
# inject_into_module "app/helpers/application_helper.rb", ApplicationHelper, " def help; 'help'; end\n"
|
236
|
+
# inject_into_module "app/helpers/application_helper.rb", "ApplicationHelper", " def help; 'help'; end\n"
|
237
237
|
#
|
238
|
-
# inject_into_module "app/helpers/application_helper.rb", ApplicationHelper do
|
238
|
+
# inject_into_module "app/helpers/application_helper.rb", "ApplicationHelper" do
|
239
239
|
# " def help; 'help'; end\n"
|
240
240
|
# end
|
241
241
|
#
|
@@ -252,7 +252,7 @@ class Bundler::Thor
|
|
252
252
|
# flag<Regexp|String>:: the regexp or string to be replaced
|
253
253
|
# replacement<String>:: the replacement, can be also given as a block
|
254
254
|
# config<Hash>:: give :verbose => false to not log the status, and
|
255
|
-
# :force => true, to force the replacement
|
255
|
+
# :force => true, to force the replacement regardles of runner behavior.
|
256
256
|
#
|
257
257
|
# ==== Example
|
258
258
|
#
|
@@ -331,7 +331,7 @@ class Bundler::Thor
|
|
331
331
|
path = File.expand_path(path, destination_root)
|
332
332
|
|
333
333
|
say_status :remove, relative_to_original_destination_root(path), config.fetch(:verbose, true)
|
334
|
-
if !options[:pretend] && File.exist?(path)
|
334
|
+
if !options[:pretend] && (File.exist?(path) || File.symlink?(path))
|
335
335
|
require "fileutils"
|
336
336
|
::FileUtils.rm_rf(path)
|
337
337
|
end
|
@@ -106,12 +106,11 @@ class Bundler::Thor
|
|
106
106
|
# Adds the content to the file.
|
107
107
|
#
|
108
108
|
def replace!(regexp, string, force)
|
109
|
-
return if pretend?
|
110
109
|
content = File.read(destination)
|
111
110
|
if force || !content.include?(replacement)
|
112
111
|
success = content.gsub!(regexp, string)
|
113
112
|
|
114
|
-
File.open(destination, "wb") { |file| file.write(content) }
|
113
|
+
File.open(destination, "wb") { |file| file.write(content) } unless pretend?
|
115
114
|
success
|
116
115
|
end
|
117
116
|
end
|
@@ -161,6 +161,8 @@ class Bundler::Thor
|
|
161
161
|
# to the block you provide. The path is set back to the previous path when
|
162
162
|
# the method exits.
|
163
163
|
#
|
164
|
+
# Returns the value yielded by the block.
|
165
|
+
#
|
164
166
|
# ==== Parameters
|
165
167
|
# dir<String>:: the directory to move to.
|
166
168
|
# config<Hash>:: give :verbose => true to log and use padding.
|
@@ -179,16 +181,18 @@ class Bundler::Thor
|
|
179
181
|
FileUtils.mkdir_p(destination_root)
|
180
182
|
end
|
181
183
|
|
184
|
+
result = nil
|
182
185
|
if pretend
|
183
186
|
# In pretend mode, just yield down to the block
|
184
|
-
block.arity == 1 ? yield(destination_root) : yield
|
187
|
+
result = block.arity == 1 ? yield(destination_root) : yield
|
185
188
|
else
|
186
189
|
require "fileutils"
|
187
|
-
FileUtils.cd(destination_root) { block.arity == 1 ? yield(destination_root) : yield }
|
190
|
+
FileUtils.cd(destination_root) { result = block.arity == 1 ? yield(destination_root) : yield }
|
188
191
|
end
|
189
192
|
|
190
193
|
@destination_stack.pop
|
191
194
|
shell.padding -= 1 if verbose
|
195
|
+
result
|
192
196
|
end
|
193
197
|
|
194
198
|
# Goes to the root and execute the given block.
|
@@ -102,9 +102,14 @@ class Bundler::Thor
|
|
102
102
|
end
|
103
103
|
|
104
104
|
if Correctable
|
105
|
-
DidYouMean
|
106
|
-
|
107
|
-
|
108
|
-
|
105
|
+
if DidYouMean.respond_to?(:correct_error)
|
106
|
+
DidYouMean.correct_error(Bundler::Thor::UndefinedCommandError, UndefinedCommandError::SpellChecker)
|
107
|
+
DidYouMean.correct_error(Bundler::Thor::UnknownArgumentError, UnknownArgumentError::SpellChecker)
|
108
|
+
else
|
109
|
+
DidYouMean::SPELL_CHECKERS.merge!(
|
110
|
+
'Bundler::Thor::UndefinedCommandError' => UndefinedCommandError::SpellChecker,
|
111
|
+
'Bundler::Thor::UnknownArgumentError' => UnknownArgumentError::SpellChecker
|
112
|
+
)
|
113
|
+
end
|
109
114
|
end
|
110
115
|
end
|
@@ -45,6 +45,7 @@ class Bundler::Thor
|
|
45
45
|
@switches = {}
|
46
46
|
@extra = []
|
47
47
|
@stopped_parsing_after_extra_index = nil
|
48
|
+
@is_treated_as_value = false
|
48
49
|
|
49
50
|
options.each do |option|
|
50
51
|
@switches[option.switch_name] = option
|
@@ -74,8 +75,19 @@ class Bundler::Thor
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
78
|
+
def shift
|
79
|
+
@is_treated_as_value = false
|
80
|
+
super
|
81
|
+
end
|
82
|
+
|
83
|
+
def unshift(arg, is_value: false)
|
84
|
+
@is_treated_as_value = is_value
|
85
|
+
super(arg)
|
86
|
+
end
|
87
|
+
|
77
88
|
def parse(args) # rubocop:disable MethodLength
|
78
89
|
@pile = args.dup
|
90
|
+
@is_treated_as_value = false
|
79
91
|
@parsing_options = true
|
80
92
|
|
81
93
|
while peek
|
@@ -88,7 +100,10 @@ class Bundler::Thor
|
|
88
100
|
when SHORT_SQ_RE
|
89
101
|
unshift($1.split("").map { |f| "-#{f}" })
|
90
102
|
next
|
91
|
-
when EQ_RE
|
103
|
+
when EQ_RE
|
104
|
+
unshift($2, is_value: true)
|
105
|
+
switch = $1
|
106
|
+
when SHORT_NUM
|
92
107
|
unshift($2)
|
93
108
|
switch = $1
|
94
109
|
when LONG_RE, SHORT_RE
|
@@ -148,6 +163,7 @@ class Bundler::Thor
|
|
148
163
|
# Two booleans are returned. The first is true if the current value
|
149
164
|
# starts with a hyphen; the second is true if it is a registered switch.
|
150
165
|
def current_is_switch?
|
166
|
+
return [false, false] if @is_treated_as_value
|
151
167
|
case peek
|
152
168
|
when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM
|
153
169
|
[true, switch?($1)]
|
@@ -159,6 +175,7 @@ class Bundler::Thor
|
|
159
175
|
end
|
160
176
|
|
161
177
|
def current_is_switch_formatted?
|
178
|
+
return false if @is_treated_as_value
|
162
179
|
case peek
|
163
180
|
when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM, SHORT_SQ_RE
|
164
181
|
true
|
@@ -168,6 +185,7 @@ class Bundler::Thor
|
|
168
185
|
end
|
169
186
|
|
170
187
|
def current_is_value?
|
188
|
+
return true if @is_treated_as_value
|
171
189
|
peek && (!parsing_options? || super)
|
172
190
|
end
|
173
191
|
|
@@ -103,6 +103,23 @@ class Bundler::Thor
|
|
103
103
|
stdout.flush
|
104
104
|
end
|
105
105
|
|
106
|
+
# Say (print) an error to the user. If the sentence ends with a whitespace
|
107
|
+
# or tab character, a new line is not appended (print + flush). Otherwise
|
108
|
+
# are passed straight to puts (behavior got from Highline).
|
109
|
+
#
|
110
|
+
# ==== Example
|
111
|
+
# say_error("error: something went wrong")
|
112
|
+
#
|
113
|
+
def say_error(message = "", color = nil, force_new_line = (message.to_s !~ /( |\t)\Z/))
|
114
|
+
return if quiet?
|
115
|
+
|
116
|
+
buffer = prepare_message(message, *color)
|
117
|
+
buffer << "\n" if force_new_line && !message.to_s.end_with?("\n")
|
118
|
+
|
119
|
+
stderr.print(buffer)
|
120
|
+
stderr.flush
|
121
|
+
end
|
122
|
+
|
106
123
|
# Say a status with the given color and appends the message. Since this
|
107
124
|
# method is used frequently by actions, it allows nil or false to be given
|
108
125
|
# in log_status, avoiding the message from being shown. If a Symbol is
|
@@ -111,13 +128,14 @@ class Bundler::Thor
|
|
111
128
|
def say_status(status, message, log_status = true)
|
112
129
|
return if quiet? || log_status == false
|
113
130
|
spaces = " " * (padding + 1)
|
114
|
-
color = log_status.is_a?(Symbol) ? log_status : :green
|
115
|
-
|
116
131
|
status = status.to_s.rjust(12)
|
132
|
+
margin = " " * status.length + spaces
|
133
|
+
|
134
|
+
color = log_status.is_a?(Symbol) ? log_status : :green
|
117
135
|
status = set_color status, color, true if color
|
118
136
|
|
119
|
-
|
120
|
-
buffer = "#{
|
137
|
+
message = message.to_s.chomp.gsub(/(?<!\A)^/, margin)
|
138
|
+
buffer = "#{status}#{spaces}#{message}\n"
|
121
139
|
|
122
140
|
stdout.print(buffer)
|
123
141
|
stdout.flush
|
@@ -21,7 +21,7 @@ class Bundler::Thor
|
|
21
21
|
end
|
22
22
|
|
23
23
|
module Shell
|
24
|
-
SHELL_DELEGATED_METHODS = [:ask, :error, :set_color, :yes?, :no?, :say, :say_status, :print_in_columns, :print_table, :print_wrapped, :file_collision, :terminal_width]
|
24
|
+
SHELL_DELEGATED_METHODS = [:ask, :error, :set_color, :yes?, :no?, :say, :say_error, :say_status, :print_in_columns, :print_table, :print_wrapped, :file_collision, :terminal_width]
|
25
25
|
attr_writer :shell
|
26
26
|
|
27
27
|
autoload :Basic, File.expand_path("shell/basic", __dir__)
|
@@ -211,7 +211,7 @@ class Bundler::Thor
|
|
211
211
|
#
|
212
212
|
def globs_for(path)
|
213
213
|
path = escape_globs(path)
|
214
|
-
["#{path}/Thorfile", "#{path}/*.thor", "#{path}/tasks/*.thor", "#{path}/lib/tasks
|
214
|
+
["#{path}/Thorfile", "#{path}/*.thor", "#{path}/tasks/*.thor", "#{path}/lib/tasks/**/*.thor"]
|
215
215
|
end
|
216
216
|
|
217
217
|
# Return the path to the ruby interpreter taking into account multiple
|
data/lib/rubygems/deprecate.rb
CHANGED
@@ -96,7 +96,7 @@ module Gem::Deprecate
|
|
96
96
|
end
|
97
97
|
|
98
98
|
# Deprecation method to deprecate Rubygems commands
|
99
|
-
def rubygems_deprecate_command
|
99
|
+
def rubygems_deprecate_command(version = Gem::Deprecate.next_rubygems_major_version)
|
100
100
|
class_eval do
|
101
101
|
define_method "deprecated?" do
|
102
102
|
true
|
@@ -104,7 +104,7 @@ module Gem::Deprecate
|
|
104
104
|
|
105
105
|
define_method "deprecation_warning" do
|
106
106
|
msg = [ "#{self.command} command is deprecated",
|
107
|
-
". It will be removed in Rubygems #{
|
107
|
+
". It will be removed in Rubygems #{version}.\n",
|
108
108
|
]
|
109
109
|
|
110
110
|
alert_warning "#{msg.join}" unless Gem::Deprecate.skip
|
data/lib/rubygems/requirement.rb
CHANGED
data/lib/rubygems.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
require 'rbconfig'
|
9
9
|
|
10
10
|
module Gem
|
11
|
-
VERSION = "3.2.
|
11
|
+
VERSION = "3.2.34".freeze
|
12
12
|
end
|
13
13
|
|
14
14
|
# Must be first since it unloads the prelude from 1.9.2
|
@@ -1293,7 +1293,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1293
1293
|
end
|
1294
1294
|
|
1295
1295
|
def default_gem_load_paths
|
1296
|
-
@default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1]
|
1296
|
+
@default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1].map do |lp|
|
1297
|
+
expanded = File.expand_path(lp)
|
1298
|
+
next expanded unless File.exist?(expanded)
|
1299
|
+
|
1300
|
+
File.realpath(expanded)
|
1301
|
+
end
|
1297
1302
|
end
|
1298
1303
|
end
|
1299
1304
|
|
@@ -1310,37 +1315,19 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1310
1315
|
autoload :Licenses, File.expand_path('rubygems/util/licenses', __dir__)
|
1311
1316
|
autoload :NameTuple, File.expand_path('rubygems/name_tuple', __dir__)
|
1312
1317
|
autoload :PathSupport, File.expand_path('rubygems/path_support', __dir__)
|
1313
|
-
autoload :Platform, File.expand_path('rubygems/platform', __dir__)
|
1314
1318
|
autoload :RequestSet, File.expand_path('rubygems/request_set', __dir__)
|
1315
|
-
autoload :Requirement, File.expand_path('rubygems/requirement', __dir__)
|
1316
1319
|
autoload :Resolver, File.expand_path('rubygems/resolver', __dir__)
|
1317
1320
|
autoload :Source, File.expand_path('rubygems/source', __dir__)
|
1318
1321
|
autoload :SourceList, File.expand_path('rubygems/source_list', __dir__)
|
1319
1322
|
autoload :SpecFetcher, File.expand_path('rubygems/spec_fetcher', __dir__)
|
1320
|
-
autoload :Specification, File.expand_path('rubygems/specification', __dir__)
|
1321
1323
|
autoload :Util, File.expand_path('rubygems/util', __dir__)
|
1322
1324
|
autoload :Version, File.expand_path('rubygems/version', __dir__)
|
1323
1325
|
end
|
1324
1326
|
|
1325
1327
|
require_relative 'rubygems/exceptions'
|
1328
|
+
require_relative 'rubygems/specification'
|
1326
1329
|
|
1327
1330
|
# REFACTOR: This should be pulled out into some kind of hacks file.
|
1328
|
-
begin
|
1329
|
-
##
|
1330
|
-
# Defaults the Ruby implementation wants to provide for RubyGems
|
1331
|
-
|
1332
|
-
require "rubygems/defaults/#{RUBY_ENGINE}"
|
1333
|
-
rescue LoadError
|
1334
|
-
end
|
1335
|
-
|
1336
|
-
##
|
1337
|
-
# Loads the default specs.
|
1338
|
-
Gem::Specification.load_defaults
|
1339
|
-
|
1340
|
-
require_relative 'rubygems/core_ext/kernel_gem'
|
1341
|
-
require_relative 'rubygems/core_ext/kernel_require'
|
1342
|
-
require_relative 'rubygems/core_ext/kernel_warn'
|
1343
|
-
|
1344
1331
|
begin
|
1345
1332
|
##
|
1346
1333
|
# Defaults the operating system (or packager) wants to provide for RubyGems.
|
@@ -1356,3 +1343,19 @@ rescue StandardError => e
|
|
1356
1343
|
"the problem and ask for help."
|
1357
1344
|
raise e.class, msg
|
1358
1345
|
end
|
1346
|
+
|
1347
|
+
begin
|
1348
|
+
##
|
1349
|
+
# Defaults the Ruby implementation wants to provide for RubyGems
|
1350
|
+
|
1351
|
+
require "rubygems/defaults/#{RUBY_ENGINE}"
|
1352
|
+
rescue LoadError
|
1353
|
+
end
|
1354
|
+
|
1355
|
+
##
|
1356
|
+
# Loads the default specs.
|
1357
|
+
Gem::Specification.load_defaults
|
1358
|
+
|
1359
|
+
require_relative 'rubygems/core_ext/kernel_gem'
|
1360
|
+
require_relative 'rubygems/core_ext/kernel_require'
|
1361
|
+
require_relative 'rubygems/core_ext/kernel_warn'
|
data/rubygems-update.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rubygems-update"
|
5
|
-
s.version = "3.2.
|
5
|
+
s.version = "3.2.34"
|
6
6
|
s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
|
7
7
|
s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
|
8
8
|
|
@@ -311,4 +311,29 @@ class TestGemCommandManager < Gem::TestCase
|
|
311
311
|
ensure
|
312
312
|
Gem::Commands.send(:remove_const, :FooCommand)
|
313
313
|
end
|
314
|
+
|
315
|
+
def test_deprecated_command_with_version
|
316
|
+
require "rubygems/command"
|
317
|
+
foo_command = Class.new(Gem::Command) do
|
318
|
+
extend Gem::Deprecate
|
319
|
+
|
320
|
+
rubygems_deprecate_command("9.9.9")
|
321
|
+
|
322
|
+
def execute
|
323
|
+
say "pew pew!"
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
Gem::Commands.send(:const_set, :FooCommand, foo_command)
|
328
|
+
@command_manager.register_command(:foo, foo_command.new("foo"))
|
329
|
+
|
330
|
+
use_ui @ui do
|
331
|
+
@command_manager.process_args(%w[foo])
|
332
|
+
end
|
333
|
+
|
334
|
+
assert_equal "pew pew!\n", @ui.output
|
335
|
+
assert_match(/WARNING: foo command is deprecated. It will be removed in Rubygems 9.9.9/, @ui.error)
|
336
|
+
ensure
|
337
|
+
Gem::Commands.send(:remove_const, :FooCommand)
|
338
|
+
end
|
314
339
|
end
|
@@ -63,6 +63,11 @@ class TestGemSourceGit < Gem::TestCase
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def test_checkout_submodules
|
66
|
+
# We need to allow to checkout submodules with file:// protocol
|
67
|
+
# CVE-2022-39253
|
68
|
+
# https://lore.kernel.org/lkml/xmqq4jw1uku5.fsf@gitster.g/
|
69
|
+
system(@git, *%W[config --global protocol.file.allow always])
|
70
|
+
|
66
71
|
source = Gem::Source::Git.new @name, @repository, 'master', true
|
67
72
|
|
68
73
|
git_gem 'b'
|
@@ -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.2.34
|
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:
|
19
|
+
date: 2023-02-06 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
|