rubygems-update 3.2.25 → 3.2.26
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/CHANGELOG.md +15 -0
- data/Manifest.txt +1 -0
- data/bundler/CHANGELOG.md +18 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli.rb +5 -9
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +1 -6
- data/bundler/lib/bundler/cli/gem.rb +3 -2
- data/bundler/lib/bundler/definition.rb +1 -7
- data/bundler/lib/bundler/dsl.rb +1 -1
- data/bundler/lib/bundler/errors.rb +1 -1
- data/bundler/lib/bundler/installer/standalone.rb +13 -8
- data/bundler/lib/bundler/resolver.rb +10 -17
- data/bundler/lib/bundler/settings.rb +2 -0
- data/bundler/lib/bundler/source.rb +4 -2
- data/bundler/lib/bundler/source/rubygems.rb +17 -7
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +4 -0
- data/bundler/lib/bundler/source_list.rb +0 -4
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +12 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +3 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems.rb +23 -23
- data/lib/rubygems/installer.rb +10 -1
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +5 -1
- data/test/rubygems/test_gem.rb +189 -135
- data/test/rubygems/test_gem_installer.rb +2 -0
- data/test/rubygems/test_rubygems.rb +44 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7512a42ddcfe60a9e59f8e41784a0231ef8475623d8d26049b9a569464f29362
|
|
4
|
+
data.tar.gz: 55bf6b6feb583c388c333bbda49a6cfea16b5ab4fbdd0729f3848b8e43446e61
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d517a10dc959cac467f01ae031b055d7de7cfe5f325ee78105b58d75069f9b239c5f8fbcd3ae1541a63bf7c5f148791dc4366a84a7c7f6465a689c8e2375784f
|
|
7
|
+
data.tar.gz: 0bc64e82a79dac9d2dad0af7471ab9587eddeb2795b20651fa8a8f30eb8915fd56080984806d1c12b15b84890308e264011d45dd22b55945c11b02009aec4f88
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
# 3.2.26 / 2021-08-17
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
* Enhance the error handling for loading the
|
|
6
|
+
`rubygems/defaults/operating_system` file. Pull request #4824 by
|
|
7
|
+
intuxicated
|
|
8
|
+
* Ignore `RUBYGEMS_GEMDEPS` for the bundler gem. Pull request #4532 by
|
|
9
|
+
deivid-rodriguez
|
|
10
|
+
|
|
11
|
+
## Bug fixes:
|
|
12
|
+
|
|
13
|
+
* Also load user installed rubygems plugins. Pull request #4829 by
|
|
14
|
+
deivid-rodriguez
|
|
15
|
+
|
|
1
16
|
# 3.2.25 / 2021-07-30
|
|
2
17
|
|
|
3
18
|
## Enhancements:
|
data/Manifest.txt
CHANGED
|
@@ -687,6 +687,7 @@ test/rubygems/test_kernel.rb
|
|
|
687
687
|
test/rubygems/test_project_sanity.rb
|
|
688
688
|
test/rubygems/test_remote_fetch_error.rb
|
|
689
689
|
test/rubygems/test_require.rb
|
|
690
|
+
test/rubygems/test_rubygems.rb
|
|
690
691
|
test/rubygems/utilities.rb
|
|
691
692
|
test/rubygems/wrong_key_cert.pem
|
|
692
693
|
test/rubygems/wrong_key_cert_32.pem
|
data/bundler/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
# 2.2.26 (August 17, 2021)
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
- Remove `RUBYGEMS_GEMDEPS` warning [#4827](https://github.com/rubygems/rubygems/pull/4827)
|
|
6
|
+
- Better defaults for GitHub Actions template generated by `bundle gem` [#4619](https://github.com/rubygems/rubygems/pull/4619)
|
|
7
|
+
- Make `bundle exec` keep file descriptors by default [#4812](https://github.com/rubygems/rubygems/pull/4812)
|
|
8
|
+
- Exclude gemspec file itself from file list of gems generated by `bundle gem` [#4650](https://github.com/rubygems/rubygems/pull/4650)
|
|
9
|
+
- Fix a couple small typos in deprecation / error messages [#4806](https://github.com/rubygems/rubygems/pull/4806)
|
|
10
|
+
- Make script generated by `bundle install --standalone` resilient to moving the application to a differently nested folder when `path` sources are used [#4792](https://github.com/rubygems/rubygems/pull/4792)
|
|
11
|
+
- Exclude CI files and issue templates from file list of gems generated by `bundle gem` [#4033](https://github.com/rubygems/rubygems/pull/4033)
|
|
12
|
+
|
|
13
|
+
## Bug fixes:
|
|
14
|
+
|
|
15
|
+
- Respect `BUNDLE_USER_HOME` env when choosing config location [#4828](https://github.com/rubygems/rubygems/pull/4828)
|
|
16
|
+
- Fix `bundle gem` on path with spaces [#4816](https://github.com/rubygems/rubygems/pull/4816)
|
|
17
|
+
- Fix bundler hitting the network in some cases where not allowed [#4805](https://github.com/rubygems/rubygems/pull/4805)
|
|
18
|
+
|
|
1
19
|
# 2.2.25 (July 30, 2021)
|
|
2
20
|
|
|
3
21
|
## Deprecations:
|
|
@@ -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 = "2021-
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2021-08-17".freeze
|
|
8
|
+
@git_commit_sha = "21fd333002".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
data/bundler/lib/bundler/cli.rb
CHANGED
|
@@ -73,14 +73,6 @@ module Bundler
|
|
|
73
73
|
Bundler.ui = UI::Shell.new(options)
|
|
74
74
|
Bundler.ui.level = "debug" if options["verbose"]
|
|
75
75
|
unprinted_warnings.each {|w| Bundler.ui.warn(w) }
|
|
76
|
-
|
|
77
|
-
if ENV["RUBYGEMS_GEMDEPS"] && !ENV["RUBYGEMS_GEMDEPS"].empty?
|
|
78
|
-
Bundler.ui.warn(
|
|
79
|
-
"The RUBYGEMS_GEMDEPS environment variable is set. This enables RubyGems' " \
|
|
80
|
-
"experimental Gemfile mode, which may conflict with Bundler and cause unexpected errors. " \
|
|
81
|
-
"To remove this warning, unset RUBYGEMS_GEMDEPS.", :wrap => true
|
|
82
|
-
)
|
|
83
|
-
end
|
|
84
76
|
end
|
|
85
77
|
|
|
86
78
|
check_unknown_options!(:except => [:config, :exec])
|
|
@@ -469,7 +461,7 @@ module Bundler
|
|
|
469
461
|
map aliases_for("cache")
|
|
470
462
|
|
|
471
463
|
desc "exec [OPTIONS]", "Run the command in context of the bundle"
|
|
472
|
-
method_option :keep_file_descriptors, :type => :boolean, :default =>
|
|
464
|
+
method_option :keep_file_descriptors, :type => :boolean, :default => true
|
|
473
465
|
method_option :gemfile, :type => :string, :required => false
|
|
474
466
|
long_desc <<-D
|
|
475
467
|
Exec runs a command, providing it access to the gems in the bundle. While using
|
|
@@ -477,6 +469,10 @@ module Bundler
|
|
|
477
469
|
into the system wide RubyGems repository.
|
|
478
470
|
D
|
|
479
471
|
def exec(*args)
|
|
472
|
+
if ARGV.include?("--no-keep-file-descriptors")
|
|
473
|
+
SharedHelpers.major_deprecation(2, "The `--no-keep-file-descriptors` has been deprecated. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to")
|
|
474
|
+
end
|
|
475
|
+
|
|
480
476
|
require_relative "cli/exec"
|
|
481
477
|
Exec.new(options, args).run
|
|
482
478
|
end
|
|
@@ -15,7 +15,7 @@ module Bundler
|
|
|
15
15
|
definition.validate_runtime!
|
|
16
16
|
|
|
17
17
|
begin
|
|
18
|
-
definition.
|
|
18
|
+
definition.resolve_with_cache!
|
|
19
19
|
not_installed = definition.missing_specs
|
|
20
20
|
rescue GemNotFound, VersionConflict
|
|
21
21
|
Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
|
|
@@ -12,12 +12,7 @@ module Bundler
|
|
|
12
12
|
@options = options
|
|
13
13
|
@cmd = args.shift
|
|
14
14
|
@args = args
|
|
15
|
-
|
|
16
|
-
if !Bundler.current_ruby.jruby?
|
|
17
|
-
@args << { :close_others => !options.keep_file_descriptors? }
|
|
18
|
-
elsif options.keep_file_descriptors?
|
|
19
|
-
Bundler.ui.warn "Ruby version #{RUBY_VERSION} defaults to keeping non-standard file descriptors on Kernel#exec."
|
|
20
|
-
end
|
|
15
|
+
@args << { :close_others => !options.keep_file_descriptors? } unless Bundler.current_ruby.jruby?
|
|
21
16
|
end
|
|
22
17
|
|
|
23
18
|
def run
|
|
@@ -184,14 +184,15 @@ module Bundler
|
|
|
184
184
|
)
|
|
185
185
|
end
|
|
186
186
|
|
|
187
|
-
if
|
|
187
|
+
if target.exist? && !target.directory?
|
|
188
188
|
Bundler.ui.error "Couldn't create a new gem named `#{gem_name}` because there's an existing file named `#{gem_name}`."
|
|
189
189
|
exit Bundler::BundlerError.all_errors[Bundler::GenericSystemCallError]
|
|
190
190
|
end
|
|
191
191
|
|
|
192
192
|
if use_git
|
|
193
193
|
Bundler.ui.info "Initializing git repo in #{target}"
|
|
194
|
-
|
|
194
|
+
require "shellwords"
|
|
195
|
+
`git init #{target.to_s.shellescape}`
|
|
195
196
|
|
|
196
197
|
config[:git_default_branch] = File.read("#{target}/.git/HEAD").split("/").last.chomp
|
|
197
198
|
end
|
|
@@ -161,12 +161,6 @@ module Bundler
|
|
|
161
161
|
@multisource_allowed
|
|
162
162
|
end
|
|
163
163
|
|
|
164
|
-
def resolve_only_locally!
|
|
165
|
-
@remote = false
|
|
166
|
-
sources.local_only!
|
|
167
|
-
resolve
|
|
168
|
-
end
|
|
169
|
-
|
|
170
164
|
def resolve_with_cache!
|
|
171
165
|
sources.cached!
|
|
172
166
|
resolve
|
|
@@ -505,7 +499,7 @@ module Bundler
|
|
|
505
499
|
end
|
|
506
500
|
|
|
507
501
|
def precompute_source_requirements_for_indirect_dependencies?
|
|
508
|
-
sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
|
|
502
|
+
@remote && sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
|
|
509
503
|
end
|
|
510
504
|
|
|
511
505
|
def current_ruby_platform_locked?
|
data/bundler/lib/bundler/dsl.rb
CHANGED
|
@@ -457,7 +457,7 @@ repo_name ||= user_name
|
|
|
457
457
|
def implicit_global_source_warning
|
|
458
458
|
Bundler::SharedHelpers.major_deprecation 2, "This Gemfile does not include an explicit global source. " \
|
|
459
459
|
"Not using an explicit global source may result in a different lockfile being generated depending on " \
|
|
460
|
-
"the gems you have installed locally before bundler is run." \
|
|
460
|
+
"the gems you have installed locally before bundler is run. " \
|
|
461
461
|
"Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\"."
|
|
462
462
|
end
|
|
463
463
|
|
|
@@ -122,7 +122,7 @@ module Bundler
|
|
|
122
122
|
|
|
123
123
|
class VirtualProtocolError < BundlerError
|
|
124
124
|
def message
|
|
125
|
-
"There was an error relating to virtualization and file access." \
|
|
125
|
+
"There was an error relating to virtualization and file access. " \
|
|
126
126
|
"It is likely that you need to grant access to or mount some file system correctly."
|
|
127
127
|
end
|
|
128
128
|
|
|
@@ -12,12 +12,13 @@ module Bundler
|
|
|
12
12
|
end
|
|
13
13
|
File.open File.join(bundler_path, "setup.rb"), "w" do |file|
|
|
14
14
|
file.puts "require 'rbconfig'"
|
|
15
|
-
file.puts "ruby_engine = RUBY_ENGINE"
|
|
16
|
-
file.puts "ruby_version = RbConfig::CONFIG[\"ruby_version\"]"
|
|
17
|
-
file.puts "path = File.expand_path('..', __FILE__)"
|
|
18
15
|
file.puts reverse_rubygems_kernel_mixin
|
|
19
16
|
paths.each do |path|
|
|
20
|
-
|
|
17
|
+
if Pathname.new(path).absolute?
|
|
18
|
+
file.puts %($:.unshift "#{path}")
|
|
19
|
+
else
|
|
20
|
+
file.puts %($:.unshift File.expand_path("\#{__dir__}/#{path}"))
|
|
21
|
+
end
|
|
21
22
|
end
|
|
22
23
|
end
|
|
23
24
|
end
|
|
@@ -28,14 +29,14 @@ module Bundler
|
|
|
28
29
|
@specs.map do |spec|
|
|
29
30
|
next if spec.name == "bundler"
|
|
30
31
|
Array(spec.require_paths).map do |path|
|
|
31
|
-
gem_path(path, spec).sub(version_dir, '#{
|
|
32
|
+
gem_path(path, spec).sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}')
|
|
32
33
|
# This is a static string intentionally. It's interpolated at a later time.
|
|
33
34
|
end
|
|
34
|
-
end.flatten
|
|
35
|
+
end.flatten.compact
|
|
35
36
|
end
|
|
36
37
|
|
|
37
38
|
def version_dir
|
|
38
|
-
"#{
|
|
39
|
+
"#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}"
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
def bundler_path
|
|
@@ -44,7 +45,11 @@ module Bundler
|
|
|
44
45
|
|
|
45
46
|
def gem_path(path, spec)
|
|
46
47
|
full_path = Pathname.new(path).absolute? ? path : File.join(spec.full_gem_path, path)
|
|
47
|
-
|
|
48
|
+
if spec.source.instance_of?(Source::Path)
|
|
49
|
+
full_path
|
|
50
|
+
else
|
|
51
|
+
Pathname.new(full_path).relative_path_from(Bundler.root.join(bundler_path)).to_s
|
|
52
|
+
end
|
|
48
53
|
rescue TypeError
|
|
49
54
|
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
|
50
55
|
raise Gem::InvalidSpecificationException.new(error_message)
|
|
@@ -255,12 +255,6 @@ module Bundler
|
|
|
255
255
|
next if name == "bundler"
|
|
256
256
|
next unless search_for(requirement).empty?
|
|
257
257
|
|
|
258
|
-
cache_message = begin
|
|
259
|
-
" or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
|
|
260
|
-
rescue GemfileNotFound
|
|
261
|
-
nil
|
|
262
|
-
end
|
|
263
|
-
|
|
264
258
|
if (base = @base[name]) && !base.empty?
|
|
265
259
|
version = base.first.version
|
|
266
260
|
message = "You have requested:\n" \
|
|
@@ -269,18 +263,17 @@ module Bundler
|
|
|
269
263
|
"Try running `bundle update #{name}`\n\n" \
|
|
270
264
|
"If you are updating multiple gems in your Gemfile at once,\n" \
|
|
271
265
|
"try passing them all to `bundle update`"
|
|
272
|
-
|
|
266
|
+
else
|
|
267
|
+
source = source_for(name)
|
|
273
268
|
specs = source.specs.search(name)
|
|
274
269
|
versions_with_platforms = specs.map {|s| [s.version, s.platform] }
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
message = "Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in any of the gem sources " \
|
|
283
|
-
"listed in your Gemfile#{cache_message}."
|
|
270
|
+
cache_message = begin
|
|
271
|
+
" or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
|
|
272
|
+
rescue GemfileNotFound
|
|
273
|
+
nil
|
|
274
|
+
end
|
|
275
|
+
message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source.to_err}#{cache_message}.\n")
|
|
276
|
+
message << "The source contains the following versions of '#{name}': #{formatted_versions_with_platforms(versions_with_platforms)}" if versions_with_platforms.any?
|
|
284
277
|
end
|
|
285
278
|
raise GemNotFound, message
|
|
286
279
|
end
|
|
@@ -378,7 +371,7 @@ module Bundler
|
|
|
378
371
|
o << if metadata_requirement
|
|
379
372
|
"is not available in #{relevant_source}"
|
|
380
373
|
else
|
|
381
|
-
"in #{relevant_source}.\n"
|
|
374
|
+
"in #{relevant_source.to_err}.\n"
|
|
382
375
|
end
|
|
383
376
|
end
|
|
384
377
|
end,
|
|
@@ -430,6 +430,8 @@ module Bundler
|
|
|
430
430
|
Pathname.new(ENV["BUNDLE_CONFIG"])
|
|
431
431
|
elsif ENV["BUNDLE_USER_CONFIG"] && !ENV["BUNDLE_USER_CONFIG"].empty?
|
|
432
432
|
Pathname.new(ENV["BUNDLE_USER_CONFIG"])
|
|
433
|
+
elsif ENV["BUNDLE_USER_HOME"] && !ENV["BUNDLE_USER_HOME"].empty?
|
|
434
|
+
Pathname.new(ENV["BUNDLE_USER_HOME"]).join("config")
|
|
433
435
|
elsif Bundler.rubygems.user_home && !Bundler.rubygems.user_home.empty?
|
|
434
436
|
Pathname.new(Bundler.rubygems.user_home).join(".bundle/config")
|
|
435
437
|
end
|
|
@@ -36,8 +36,6 @@ module Bundler
|
|
|
36
36
|
|
|
37
37
|
def local!; end
|
|
38
38
|
|
|
39
|
-
def local_only!; end
|
|
40
|
-
|
|
41
39
|
def cached!; end
|
|
42
40
|
|
|
43
41
|
def remote!; end
|
|
@@ -67,6 +65,10 @@ module Bundler
|
|
|
67
65
|
"#<#{self.class}:0x#{object_id} #{self}>"
|
|
68
66
|
end
|
|
69
67
|
|
|
68
|
+
def to_err
|
|
69
|
+
to_s
|
|
70
|
+
end
|
|
71
|
+
|
|
70
72
|
def path?
|
|
71
73
|
instance_of?(Bundler::Source::Path)
|
|
72
74
|
end
|
|
@@ -26,12 +26,6 @@ module Bundler
|
|
|
26
26
|
Array(options["remotes"]).reverse_each {|r| add_remote(r) }
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def local_only!
|
|
30
|
-
@specs = nil
|
|
31
|
-
@allow_local = true
|
|
32
|
-
@allow_remote = false
|
|
33
|
-
end
|
|
34
|
-
|
|
35
29
|
def local!
|
|
36
30
|
return if @allow_local
|
|
37
31
|
|
|
@@ -50,6 +44,7 @@ module Bundler
|
|
|
50
44
|
return if @allow_cached
|
|
51
45
|
|
|
52
46
|
@specs = nil
|
|
47
|
+
@allow_local = true
|
|
53
48
|
@allow_cached = true
|
|
54
49
|
end
|
|
55
50
|
|
|
@@ -96,11 +91,22 @@ module Bundler
|
|
|
96
91
|
out << " specs:\n"
|
|
97
92
|
end
|
|
98
93
|
|
|
94
|
+
def to_err
|
|
95
|
+
if remotes.empty?
|
|
96
|
+
"locally installed gems"
|
|
97
|
+
elsif @allow_remote
|
|
98
|
+
"rubygems repository #{remote_names} or installed locally"
|
|
99
|
+
elsif @allow_cached
|
|
100
|
+
"cached gems from rubygems repository #{remote_names} or installed locally"
|
|
101
|
+
else
|
|
102
|
+
"locally installed gems"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
99
106
|
def to_s
|
|
100
107
|
if remotes.empty?
|
|
101
108
|
"locally installed gems"
|
|
102
109
|
else
|
|
103
|
-
remote_names = remotes.map(&:to_s).join(", ")
|
|
104
110
|
"rubygems repository #{remote_names} or installed locally"
|
|
105
111
|
end
|
|
106
112
|
end
|
|
@@ -319,6 +325,10 @@ module Bundler
|
|
|
319
325
|
|
|
320
326
|
protected
|
|
321
327
|
|
|
328
|
+
def remote_names
|
|
329
|
+
remotes.map(&:to_s).join(", ")
|
|
330
|
+
end
|
|
331
|
+
|
|
322
332
|
def credless_remotes
|
|
323
333
|
remotes.map(&method(:suppress_configured_credentials))
|
|
324
334
|
end
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
name: Ruby
|
|
2
2
|
|
|
3
|
-
on:
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
- <%= config[:git_default_branch] %>
|
|
6
|
+
|
|
7
|
+
pull_request:
|
|
4
8
|
|
|
5
9
|
jobs:
|
|
6
10
|
build:
|
|
7
11
|
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
ruby:
|
|
16
|
+
- <%= RUBY_VERSION %>
|
|
17
|
+
|
|
8
18
|
steps:
|
|
9
19
|
- uses: actions/checkout@v2
|
|
10
20
|
- name: Set up Ruby
|
|
11
21
|
uses: ruby/setup-ruby@v1
|
|
12
22
|
with:
|
|
13
|
-
ruby-version:
|
|
23
|
+
ruby-version: ${{ matrix.ruby }}
|
|
14
24
|
bundler-cache: true
|
|
15
25
|
- name: Run the default task
|
|
16
26
|
run: bundle exec rake
|
|
@@ -25,7 +25,9 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
# Specify which files should be added to the gem when it is released.
|
|
26
26
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
27
27
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
28
|
-
`git ls-files -z`.split("\x0").reject
|
|
28
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
29
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
|
30
|
+
end
|
|
29
31
|
end
|
|
30
32
|
spec.bindir = "exe"
|
|
31
33
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
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.26".freeze
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
# Must be first since it unloads the prelude from 1.9.2
|
|
@@ -249,9 +249,6 @@ module Gem
|
|
|
249
249
|
# you to specify specific gem versions.
|
|
250
250
|
|
|
251
251
|
def self.bin_path(name, exec_name = nil, *requirements)
|
|
252
|
-
# TODO: fails test_self_bin_path_bin_file_gone_in_latest
|
|
253
|
-
# Gem::Specification.find_by_name(name, *requirements).bin_file exec_name
|
|
254
|
-
|
|
255
252
|
requirements = Gem::Requirement.default if
|
|
256
253
|
requirements.empty?
|
|
257
254
|
|
|
@@ -1053,7 +1050,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
|
1053
1050
|
# Find rubygems plugin files in the standard location and load them
|
|
1054
1051
|
|
|
1055
1052
|
def self.load_plugins
|
|
1056
|
-
|
|
1053
|
+
Gem.path.each do |gem_path|
|
|
1054
|
+
load_plugin_files Gem::Util.glob_files_in_dir("*#{Gem.plugin_suffix_pattern}", plugindir(gem_path))
|
|
1055
|
+
end
|
|
1057
1056
|
end
|
|
1058
1057
|
|
|
1059
1058
|
##
|
|
@@ -1112,26 +1111,21 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
|
1112
1111
|
|
|
1113
1112
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path)
|
|
1114
1113
|
require 'rubygems/user_interaction'
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1114
|
+
require "bundler"
|
|
1115
|
+
begin
|
|
1116
|
+
Gem::DefaultUserInteraction.use_ui(ui) do
|
|
1117
|
+
begin
|
|
1118
|
+
Bundler.ui.silence do
|
|
1119
|
+
@gemdeps = Bundler.setup
|
|
1120
|
+
end
|
|
1121
|
+
ensure
|
|
1122
|
+
Gem::DefaultUserInteraction.ui.close
|
|
1120
1123
|
end
|
|
1121
|
-
ensure
|
|
1122
|
-
Gem::DefaultUserInteraction.ui.close
|
|
1123
1124
|
end
|
|
1124
|
-
|
|
1125
|
-
end
|
|
1126
|
-
|
|
1127
|
-
rescue => e
|
|
1128
|
-
case e
|
|
1129
|
-
when Gem::LoadError, Gem::UnsatisfiableDependencyError, (defined?(Bundler::GemNotFound) ? Bundler::GemNotFound : Gem::LoadError)
|
|
1125
|
+
rescue Bundler::BundlerError => e
|
|
1130
1126
|
warn e.message
|
|
1131
|
-
warn "You may need to `
|
|
1127
|
+
warn "You may need to `bundle install` to install missing gems"
|
|
1132
1128
|
warn ""
|
|
1133
|
-
else
|
|
1134
|
-
raise
|
|
1135
1129
|
end
|
|
1136
1130
|
end
|
|
1137
1131
|
|
|
@@ -1337,6 +1331,14 @@ begin
|
|
|
1337
1331
|
|
|
1338
1332
|
require 'rubygems/defaults/operating_system'
|
|
1339
1333
|
rescue LoadError
|
|
1334
|
+
# Ignored
|
|
1335
|
+
rescue StandardError => e
|
|
1336
|
+
msg = "#{e.message}\n" \
|
|
1337
|
+
"Loading the rubygems/defaults/operating_system.rb file caused an error. " \
|
|
1338
|
+
"This file is owned by your OS, not by rubygems upstream. " \
|
|
1339
|
+
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
|
1340
|
+
"the problem and ask for help."
|
|
1341
|
+
raise e.class, msg
|
|
1340
1342
|
end
|
|
1341
1343
|
|
|
1342
1344
|
begin
|
|
@@ -1354,5 +1356,3 @@ Gem::Specification.load_defaults
|
|
|
1354
1356
|
require 'rubygems/core_ext/kernel_gem'
|
|
1355
1357
|
require 'rubygems/core_ext/kernel_require'
|
|
1356
1358
|
require 'rubygems/core_ext/kernel_warn'
|
|
1357
|
-
|
|
1358
|
-
Gem.use_gemdeps
|
data/lib/rubygems/installer.rb
CHANGED
|
@@ -761,7 +761,7 @@ class Gem::Installer
|
|
|
761
761
|
#
|
|
762
762
|
|
|
763
763
|
require 'rubygems'
|
|
764
|
-
|
|
764
|
+
#{gemdeps_load(spec.name)}
|
|
765
765
|
version = "#{Gem::Requirement.default_prerelease}"
|
|
766
766
|
|
|
767
767
|
str = ARGV.first
|
|
@@ -782,6 +782,15 @@ end
|
|
|
782
782
|
TEXT
|
|
783
783
|
end
|
|
784
784
|
|
|
785
|
+
def gemdeps_load(name)
|
|
786
|
+
return '' if name == "bundler"
|
|
787
|
+
|
|
788
|
+
<<-TEXT
|
|
789
|
+
|
|
790
|
+
Gem.use_gemdeps
|
|
791
|
+
TEXT
|
|
792
|
+
end
|
|
793
|
+
|
|
785
794
|
##
|
|
786
795
|
# return the stub script text used to launch the true Ruby script
|
|
787
796
|
|
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.26"
|
|
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
|
|
data/test/rubygems/helper.rb
CHANGED
|
@@ -1297,7 +1297,11 @@ Also, a list:
|
|
|
1297
1297
|
end
|
|
1298
1298
|
|
|
1299
1299
|
def ruby_with_rubygems_in_load_path
|
|
1300
|
-
[Gem.ruby, "-I",
|
|
1300
|
+
[Gem.ruby, "-I", rubygems_path]
|
|
1301
|
+
end
|
|
1302
|
+
|
|
1303
|
+
def rubygems_path
|
|
1304
|
+
$LOAD_PATH.find{|p| p == File.dirname($LOADED_FEATURES.find{|f| f.end_with?("/rubygems.rb") }) }
|
|
1301
1305
|
end
|
|
1302
1306
|
|
|
1303
1307
|
def with_clean_path_to_ruby
|
data/test/rubygems/test_gem.rb
CHANGED
|
@@ -19,7 +19,6 @@ class TestGem < Gem::TestCase
|
|
|
19
19
|
|
|
20
20
|
common_installer_setup
|
|
21
21
|
|
|
22
|
-
ENV.delete 'RUBYGEMS_GEMDEPS'
|
|
23
22
|
@additional = %w[a b].map {|d| File.join @tempdir, d }
|
|
24
23
|
|
|
25
24
|
util_remove_interrupt_command
|
|
@@ -540,7 +539,6 @@ class TestGem < Gem::TestCase
|
|
|
540
539
|
s.executables = []
|
|
541
540
|
end
|
|
542
541
|
install_specs spec
|
|
543
|
-
# Should not find a-10's non-abin (bug)
|
|
544
542
|
assert_equal @abin_path, Gem.bin_path('a', 'abin')
|
|
545
543
|
end
|
|
546
544
|
|
|
@@ -664,22 +662,22 @@ class TestGem < Gem::TestCase
|
|
|
664
662
|
end
|
|
665
663
|
|
|
666
664
|
def test_self_use_gemdeps
|
|
667
|
-
|
|
665
|
+
with_rubygems_gemdeps('-') do
|
|
666
|
+
FileUtils.mkdir_p 'detect/a/b'
|
|
667
|
+
FileUtils.mkdir_p 'detect/a/Isolate'
|
|
668
668
|
|
|
669
|
-
|
|
670
|
-
FileUtils.mkdir_p 'detect/a/Isolate'
|
|
669
|
+
FileUtils.touch 'detect/Isolate'
|
|
671
670
|
|
|
672
|
-
|
|
671
|
+
begin
|
|
672
|
+
Dir.chdir 'detect/a/b'
|
|
673
673
|
|
|
674
|
-
|
|
675
|
-
Dir.chdir 'detect/a/b'
|
|
674
|
+
Gem.use_gemdeps
|
|
676
675
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
676
|
+
assert_equal add_bundler_full_name([]), loaded_spec_names
|
|
677
|
+
ensure
|
|
678
|
+
Dir.chdir @tempdir
|
|
679
|
+
end
|
|
680
680
|
end
|
|
681
|
-
ensure
|
|
682
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
683
681
|
end
|
|
684
682
|
|
|
685
683
|
def test_self_dir
|
|
@@ -1580,6 +1578,31 @@ class TestGem < Gem::TestCase
|
|
|
1580
1578
|
assert_equal %w[plugin], PLUGINS_LOADED
|
|
1581
1579
|
end
|
|
1582
1580
|
|
|
1581
|
+
def test_load_user_installed_plugins
|
|
1582
|
+
plugin_path = File.join "lib", "rubygems_plugin.rb"
|
|
1583
|
+
|
|
1584
|
+
Dir.chdir @tempdir do
|
|
1585
|
+
FileUtils.mkdir_p 'lib'
|
|
1586
|
+
File.open plugin_path, "w" do |fp|
|
|
1587
|
+
fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
|
|
1588
|
+
end
|
|
1589
|
+
|
|
1590
|
+
foo = util_spec 'foo', '1' do |s|
|
|
1591
|
+
s.files << plugin_path
|
|
1592
|
+
end
|
|
1593
|
+
|
|
1594
|
+
install_gem_user foo
|
|
1595
|
+
end
|
|
1596
|
+
|
|
1597
|
+
Gem.paths = { "GEM_PATH" => [Gem.dir, Gem.user_dir].join(File::PATH_SEPARATOR) }
|
|
1598
|
+
|
|
1599
|
+
gem 'foo'
|
|
1600
|
+
|
|
1601
|
+
Gem.load_plugins
|
|
1602
|
+
|
|
1603
|
+
assert_equal %w[plugin], PLUGINS_LOADED
|
|
1604
|
+
end
|
|
1605
|
+
|
|
1583
1606
|
def test_load_env_plugins
|
|
1584
1607
|
with_plugin('load') { Gem.load_env_plugins }
|
|
1585
1608
|
assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
|
|
@@ -1689,11 +1712,11 @@ class TestGem < Gem::TestCase
|
|
|
1689
1712
|
f.puts "gem 'c'"
|
|
1690
1713
|
end
|
|
1691
1714
|
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
Gem.use_gemdeps
|
|
1715
|
+
with_rubygems_gemdeps(path) do
|
|
1716
|
+
Gem.use_gemdeps
|
|
1695
1717
|
|
|
1696
|
-
|
|
1718
|
+
assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
|
|
1719
|
+
end
|
|
1697
1720
|
end
|
|
1698
1721
|
|
|
1699
1722
|
def test_auto_activation_of_used_gemdeps_file
|
|
@@ -1711,10 +1734,13 @@ class TestGem < Gem::TestCase
|
|
|
1711
1734
|
f.puts "gem 'c'"
|
|
1712
1735
|
end
|
|
1713
1736
|
|
|
1714
|
-
|
|
1737
|
+
with_rubygems_gemdeps("-") do
|
|
1738
|
+
expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact.map(&:full_name)
|
|
1739
|
+
|
|
1740
|
+
Gem.use_gemdeps
|
|
1715
1741
|
|
|
1716
|
-
|
|
1717
|
-
|
|
1742
|
+
assert_equal expected_specs, loaded_spec_names
|
|
1743
|
+
end
|
|
1718
1744
|
end
|
|
1719
1745
|
|
|
1720
1746
|
BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }
|
|
@@ -1726,10 +1752,18 @@ class TestGem < Gem::TestCase
|
|
|
1726
1752
|
names
|
|
1727
1753
|
end
|
|
1728
1754
|
|
|
1729
|
-
def
|
|
1755
|
+
def test_looks_for_gemdeps_files_automatically_from_binstubs
|
|
1730
1756
|
pend "Requiring bundler messes things up" if Gem.java_platform?
|
|
1731
1757
|
|
|
1732
|
-
a = util_spec "a", "1"
|
|
1758
|
+
a = util_spec "a", "1" do |s|
|
|
1759
|
+
s.executables = %w[foo]
|
|
1760
|
+
s.bindir = "exe"
|
|
1761
|
+
end
|
|
1762
|
+
|
|
1763
|
+
write_file File.join(@tempdir, 'exe', 'foo') do |fp|
|
|
1764
|
+
fp.puts "puts Gem.loaded_specs.values.map(&:full_name).sort"
|
|
1765
|
+
end
|
|
1766
|
+
|
|
1733
1767
|
b = util_spec "b", "1", nil, "lib/b.rb"
|
|
1734
1768
|
c = util_spec "c", "1", nil, "lib/c.rb"
|
|
1735
1769
|
|
|
@@ -1741,31 +1775,44 @@ class TestGem < Gem::TestCase
|
|
|
1741
1775
|
install_gem c, :install_dir => path
|
|
1742
1776
|
|
|
1743
1777
|
ENV['GEM_PATH'] = path
|
|
1744
|
-
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
|
1745
1778
|
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
|
1779
|
+
with_rubygems_gemdeps("-") do
|
|
1780
|
+
new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
|
|
1781
|
+
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
|
|
1750
1782
|
|
|
1751
|
-
|
|
1752
|
-
f.puts "gem 'a'"
|
|
1753
|
-
end
|
|
1754
|
-
out0 = IO.popen(cmd, &:read).split(/\n/)
|
|
1783
|
+
path = File.join @tempdir, "gem.deps.rb"
|
|
1755
1784
|
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1785
|
+
File.open path, "w" do |f|
|
|
1786
|
+
f.puts "gem 'a'"
|
|
1787
|
+
end
|
|
1788
|
+
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
|
1789
|
+
IO.popen("foo", &:read).split(/\n/)
|
|
1790
|
+
end
|
|
1791
|
+
|
|
1792
|
+
File.open path, "a" do |f|
|
|
1793
|
+
f.puts "gem 'b'"
|
|
1794
|
+
f.puts "gem 'c'"
|
|
1795
|
+
end
|
|
1796
|
+
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
|
1797
|
+
IO.popen("foo", &:read).split(/\n/)
|
|
1798
|
+
end
|
|
1761
1799
|
|
|
1762
|
-
|
|
1800
|
+
assert_equal ["b-1", "c-1"], out - out0
|
|
1801
|
+
end
|
|
1763
1802
|
end
|
|
1764
1803
|
|
|
1765
|
-
def
|
|
1804
|
+
def test_looks_for_gemdeps_files_automatically_from_binstubs_in_parent_dir
|
|
1766
1805
|
pend "Requiring bundler messes things up" if Gem.java_platform?
|
|
1767
1806
|
|
|
1768
|
-
a = util_spec "a", "1"
|
|
1807
|
+
a = util_spec "a", "1" do |s|
|
|
1808
|
+
s.executables = %w[foo]
|
|
1809
|
+
s.bindir = "exe"
|
|
1810
|
+
end
|
|
1811
|
+
|
|
1812
|
+
write_file File.join(@tempdir, 'exe', 'foo') do |fp|
|
|
1813
|
+
fp.puts "puts Gem.loaded_specs.values.map(&:full_name).sort"
|
|
1814
|
+
end
|
|
1815
|
+
|
|
1769
1816
|
b = util_spec "b", "1", nil, "lib/b.rb"
|
|
1770
1817
|
c = util_spec "c", "1", nil, "lib/c.rb"
|
|
1771
1818
|
|
|
@@ -1777,29 +1824,34 @@ class TestGem < Gem::TestCase
|
|
|
1777
1824
|
install_gem c, :install_dir => path
|
|
1778
1825
|
|
|
1779
1826
|
ENV['GEM_PATH'] = path
|
|
1780
|
-
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
|
1781
1827
|
|
|
1782
|
-
|
|
1828
|
+
with_rubygems_gemdeps("-") do
|
|
1829
|
+
Dir.mkdir "sub1"
|
|
1783
1830
|
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
"-I#{BUNDLER_LIB_PATH}"]
|
|
1787
|
-
cmd << "-eputs Gem.loaded_specs.values.map(&:full_name).sort"
|
|
1831
|
+
new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
|
|
1832
|
+
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
|
|
1788
1833
|
|
|
1789
|
-
|
|
1790
|
-
f.puts "gem 'a'"
|
|
1791
|
-
end
|
|
1792
|
-
out0 = IO.popen(cmd, &:read).split(/\n/)
|
|
1834
|
+
path = File.join @tempdir, "gem.deps.rb"
|
|
1793
1835
|
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1836
|
+
File.open path, "w" do |f|
|
|
1837
|
+
f.puts "gem 'a'"
|
|
1838
|
+
end
|
|
1839
|
+
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
|
1840
|
+
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
|
|
1841
|
+
end
|
|
1842
|
+
|
|
1843
|
+
File.open path, "a" do |f|
|
|
1844
|
+
f.puts "gem 'b'"
|
|
1845
|
+
f.puts "gem 'c'"
|
|
1846
|
+
end
|
|
1847
|
+
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
|
|
1848
|
+
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
|
|
1849
|
+
end
|
|
1799
1850
|
|
|
1800
|
-
|
|
1851
|
+
Dir.rmdir "sub1"
|
|
1801
1852
|
|
|
1802
|
-
|
|
1853
|
+
assert_equal ["b-1", "c-1"], out - out0
|
|
1854
|
+
end
|
|
1803
1855
|
end
|
|
1804
1856
|
|
|
1805
1857
|
def test_register_default_spec
|
|
@@ -1863,21 +1915,19 @@ class TestGem < Gem::TestCase
|
|
|
1863
1915
|
end
|
|
1864
1916
|
|
|
1865
1917
|
def test_use_gemdeps_ENV
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
spec = util_spec 'a', 1
|
|
1918
|
+
with_rubygems_gemdeps(nil) do
|
|
1919
|
+
spec = util_spec 'a', 1
|
|
1869
1920
|
|
|
1870
|
-
|
|
1921
|
+
refute spec.activated?
|
|
1871
1922
|
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1923
|
+
File.open 'gem.deps.rb', 'w' do |io|
|
|
1924
|
+
io.write 'gem "a"'
|
|
1925
|
+
end
|
|
1875
1926
|
|
|
1876
|
-
|
|
1927
|
+
Gem.use_gemdeps
|
|
1877
1928
|
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
1929
|
+
refute spec.activated?
|
|
1930
|
+
end
|
|
1881
1931
|
end
|
|
1882
1932
|
|
|
1883
1933
|
def test_use_gemdeps_argument_missing
|
|
@@ -1890,110 +1940,96 @@ class TestGem < Gem::TestCase
|
|
|
1890
1940
|
end
|
|
1891
1941
|
|
|
1892
1942
|
def test_use_gemdeps_argument_missing_match_ENV
|
|
1893
|
-
|
|
1894
|
-
|
|
1943
|
+
with_rubygems_gemdeps('gem.deps.rb') do
|
|
1944
|
+
e = assert_raise ArgumentError do
|
|
1945
|
+
Gem.use_gemdeps 'gem.deps.rb'
|
|
1946
|
+
end
|
|
1895
1947
|
|
|
1896
|
-
|
|
1897
|
-
|
|
1948
|
+
assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
|
|
1949
|
+
e.message
|
|
1898
1950
|
end
|
|
1899
|
-
|
|
1900
|
-
assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
|
|
1901
|
-
e.message
|
|
1902
|
-
ensure
|
|
1903
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
1904
1951
|
end
|
|
1905
1952
|
|
|
1906
1953
|
def test_use_gemdeps_automatic
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
spec = Gem::Specification.find {|s| s == spec }
|
|
1954
|
+
with_rubygems_gemdeps('-') do
|
|
1955
|
+
spec = util_spec 'a', 1
|
|
1956
|
+
install_specs spec
|
|
1957
|
+
spec = Gem::Specification.find {|s| s == spec }
|
|
1912
1958
|
|
|
1913
|
-
|
|
1959
|
+
refute spec.activated?
|
|
1914
1960
|
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1961
|
+
File.open 'Gemfile', 'w' do |io|
|
|
1962
|
+
io.write 'gem "a"'
|
|
1963
|
+
end
|
|
1918
1964
|
|
|
1919
|
-
|
|
1965
|
+
Gem.use_gemdeps
|
|
1920
1966
|
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
1967
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
|
1968
|
+
end
|
|
1924
1969
|
end
|
|
1925
1970
|
|
|
1926
1971
|
def test_use_gemdeps_automatic_missing
|
|
1927
|
-
|
|
1972
|
+
with_rubygems_gemdeps('-') do
|
|
1973
|
+
Gem.use_gemdeps
|
|
1928
1974
|
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
assert true # count
|
|
1932
|
-
ensure
|
|
1933
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
1975
|
+
assert true # count
|
|
1976
|
+
end
|
|
1934
1977
|
end
|
|
1935
1978
|
|
|
1936
1979
|
def test_use_gemdeps_disabled
|
|
1937
|
-
|
|
1980
|
+
with_rubygems_gemdeps('') do
|
|
1981
|
+
spec = util_spec 'a', 1
|
|
1938
1982
|
|
|
1939
|
-
|
|
1983
|
+
refute spec.activated?
|
|
1940
1984
|
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
io.write 'gem "a"'
|
|
1945
|
-
end
|
|
1985
|
+
File.open 'gem.deps.rb', 'w' do |io|
|
|
1986
|
+
io.write 'gem "a"'
|
|
1987
|
+
end
|
|
1946
1988
|
|
|
1947
|
-
|
|
1989
|
+
Gem.use_gemdeps
|
|
1948
1990
|
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
1991
|
+
refute spec.activated?
|
|
1992
|
+
end
|
|
1952
1993
|
end
|
|
1953
1994
|
|
|
1954
1995
|
def test_use_gemdeps_missing_gem
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
end
|
|
1996
|
+
with_rubygems_gemdeps('x') do
|
|
1997
|
+
File.open 'x', 'w' do |io|
|
|
1998
|
+
io.write 'gem "a"'
|
|
1999
|
+
end
|
|
1960
2000
|
|
|
1961
|
-
|
|
2001
|
+
expected = <<-EXPECTED
|
|
1962
2002
|
Could not find gem 'a' in locally installed gems.
|
|
1963
|
-
|
|
1964
|
-
You may need to `gem install -g` to install missing gems
|
|
2003
|
+
You may need to `bundle install` to install missing gems
|
|
1965
2004
|
|
|
1966
|
-
|
|
2005
|
+
EXPECTED
|
|
1967
2006
|
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
2007
|
+
Gem::Deprecate.skip_during do
|
|
2008
|
+
actual_stdout, actual_stderr = capture_output do
|
|
2009
|
+
Gem.use_gemdeps
|
|
2010
|
+
end
|
|
2011
|
+
assert_empty actual_stdout
|
|
2012
|
+
assert_equal(expected, actual_stderr)
|
|
1971
2013
|
end
|
|
1972
|
-
assert_empty actual_stdout
|
|
1973
|
-
assert_equal(expected, actual_stderr)
|
|
1974
2014
|
end
|
|
1975
|
-
ensure
|
|
1976
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
1977
2015
|
end
|
|
1978
2016
|
|
|
1979
2017
|
def test_use_gemdeps_specific
|
|
1980
|
-
|
|
2018
|
+
with_rubygems_gemdeps('x') do
|
|
2019
|
+
spec = util_spec 'a', 1
|
|
2020
|
+
install_specs spec
|
|
1981
2021
|
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
spec = Gem::Specification.find {|s| s == spec }
|
|
1986
|
-
refute spec.activated?
|
|
2022
|
+
spec = Gem::Specification.find {|s| s == spec }
|
|
2023
|
+
refute spec.activated?
|
|
1987
2024
|
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
2025
|
+
File.open 'x', 'w' do |io|
|
|
2026
|
+
io.write 'gem "a"'
|
|
2027
|
+
end
|
|
1991
2028
|
|
|
1992
|
-
|
|
2029
|
+
Gem.use_gemdeps
|
|
1993
2030
|
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
2031
|
+
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
|
|
2032
|
+
end
|
|
1997
2033
|
end
|
|
1998
2034
|
|
|
1999
2035
|
def test_operating_system_defaults
|
|
@@ -2111,4 +2147,22 @@ You may need to `gem install -g` to install missing gems
|
|
|
2111
2147
|
def util_cache_dir
|
|
2112
2148
|
File.join Gem.dir, "cache"
|
|
2113
2149
|
end
|
|
2150
|
+
|
|
2151
|
+
def with_path_and_rubyopt(path_value, rubyopt_value)
|
|
2152
|
+
path, ENV['PATH'] = ENV['PATH'], path_value
|
|
2153
|
+
rubyopt, ENV['RUBYOPT'] = ENV['RUBYOPT'], rubyopt_value
|
|
2154
|
+
|
|
2155
|
+
yield
|
|
2156
|
+
ensure
|
|
2157
|
+
ENV['PATH'] = path
|
|
2158
|
+
ENV['RUBYOPT'] = rubyopt
|
|
2159
|
+
end
|
|
2160
|
+
|
|
2161
|
+
def with_rubygems_gemdeps(value)
|
|
2162
|
+
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], value
|
|
2163
|
+
|
|
2164
|
+
yield
|
|
2165
|
+
ensure
|
|
2166
|
+
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
|
2167
|
+
end
|
|
2114
2168
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require_relative 'helper'
|
|
2
|
+
|
|
3
|
+
class GemTest < Gem::TestCase
|
|
4
|
+
def test_rubygems_normal_behaviour
|
|
5
|
+
_ = Gem::Util.popen(*ruby_with_rubygems_in_load_path, '-e', "'require \"rubygems\"'", {:err => [:child, :out]}).strip
|
|
6
|
+
assert $?.success?
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_operating_system_other_exceptions
|
|
10
|
+
pend "does not apply to truffleruby" if RUBY_ENGINE == 'truffleruby'
|
|
11
|
+
|
|
12
|
+
path = util_install_operating_system_rb <<-RUBY
|
|
13
|
+
intentionally_not_implemented_method
|
|
14
|
+
RUBY
|
|
15
|
+
|
|
16
|
+
output = Gem::Util.popen(*ruby_with_rubygems_and_fake_operating_system_in_load_path(path), '-e', "'require \"rubygems\"'", {:err => [:child, :out]}).strip
|
|
17
|
+
assert !$?.success?
|
|
18
|
+
assert_includes output, "undefined local variable or method `intentionally_not_implemented_method'"
|
|
19
|
+
assert_includes output, "Loading the rubygems/defaults/operating_system.rb file caused an error. " \
|
|
20
|
+
"This file is owned by your OS, not by rubygems upstream. " \
|
|
21
|
+
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
|
22
|
+
"the problem and ask for help."
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def util_install_operating_system_rb(content)
|
|
28
|
+
dir_lib = Dir.mktmpdir("test_operating_system_lib", @tempdir)
|
|
29
|
+
dir_lib_arg = File.join dir_lib
|
|
30
|
+
|
|
31
|
+
dir_lib_rubygems_defaults_arg = File.join dir_lib_arg, "lib", "rubygems", "defaults"
|
|
32
|
+
FileUtils.mkdir_p dir_lib_rubygems_defaults_arg
|
|
33
|
+
|
|
34
|
+
operating_system_rb = File.join dir_lib_rubygems_defaults_arg, "operating_system.rb"
|
|
35
|
+
|
|
36
|
+
File.open(operating_system_rb, 'w') {|f| f.write content }
|
|
37
|
+
|
|
38
|
+
File.join dir_lib_arg, "lib"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def ruby_with_rubygems_and_fake_operating_system_in_load_path(operating_system_path)
|
|
42
|
+
[Gem.ruby, "-I", operating_system_path, "-I" , $LOAD_PATH.find{|p| p == File.dirname($LOADED_FEATURES.find{|f| f.end_with?("/rubygems.rb") }) }]
|
|
43
|
+
end
|
|
44
|
+
end
|
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.26
|
|
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-08-17 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
|
|
@@ -743,6 +743,7 @@ files:
|
|
|
743
743
|
- test/rubygems/test_project_sanity.rb
|
|
744
744
|
- test/rubygems/test_remote_fetch_error.rb
|
|
745
745
|
- test/rubygems/test_require.rb
|
|
746
|
+
- test/rubygems/test_rubygems.rb
|
|
746
747
|
- test/rubygems/utilities.rb
|
|
747
748
|
- test/rubygems/wrong_key_cert.pem
|
|
748
749
|
- test/rubygems/wrong_key_cert_32.pem
|
|
@@ -770,7 +771,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
770
771
|
- !ruby/object:Gem::Version
|
|
771
772
|
version: '0'
|
|
772
773
|
requirements: []
|
|
773
|
-
rubygems_version: 3.2.
|
|
774
|
+
rubygems_version: 3.2.26
|
|
774
775
|
signing_key:
|
|
775
776
|
specification_version: 4
|
|
776
777
|
summary: RubyGems is a package management framework for Ruby.
|