rubygems-update 2.7.7 → 2.7.8
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/History.txt +51 -0
- data/Rakefile +12 -2
- data/bundler/CHANGELOG.md +80 -0
- data/bundler/README.md +1 -1
- data/bundler/bundler.gemspec +2 -1
- data/bundler/lib/bundler.rb +10 -6
- data/bundler/lib/bundler/build_metadata.rb +19 -2
- data/bundler/lib/bundler/cli.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/update.rb +3 -3
- data/bundler/lib/bundler/current_ruby.rb +8 -1
- data/bundler/lib/bundler/definition.rb +18 -13
- data/bundler/lib/bundler/dep_proxy.rb +2 -2
- data/bundler/lib/bundler/dependency.rb +1 -0
- data/bundler/lib/bundler/deprecate.rb +2 -1
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +10 -8
- data/bundler/lib/bundler/fetcher.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +10 -5
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +12 -0
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/installer/gem_installer.rb +6 -4
- data/bundler/lib/bundler/installer/parallel_installer.rb +1 -1
- data/bundler/lib/bundler/lazy_specification.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +2 -2
- data/bundler/lib/bundler/plugin/index.rb +1 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/resolver.rb +10 -9
- data/bundler/lib/bundler/resolver/spec_group.rb +0 -4
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/runtime.rb +1 -1
- data/bundler/lib/bundler/shared_helpers.rb +15 -3
- data/bundler/lib/bundler/source/metadata.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +6 -2
- data/bundler/lib/bundler/source/rubygems/remote.rb +4 -1
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -0
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +2 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +7 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/man/bundle-binstubs.ronn +1 -1
- data/bundler/man/bundle-config.ronn +4 -4
- data/bundler/man/bundle-exec.ronn +2 -2
- data/bundler/man/bundle-gem.ronn +1 -1
- data/bundler/man/bundle-install.ronn +12 -3
- data/bundler/man/bundle-lock.ronn +1 -1
- data/bundler/man/bundle-outdated.ronn +1 -1
- data/bundler/man/bundle-package.ronn +3 -3
- data/bundler/man/bundle-show.ronn +3 -2
- data/bundler/man/bundle-update.ronn +18 -14
- data/bundler/man/bundle-viz.ronn +1 -1
- data/bundler/man/bundle.ronn +18 -18
- data/bundler/man/gemfile.5.ronn +23 -8
- data/lib/rubygems.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +7 -0
- data/lib/rubygems/commands/push_command.rb +36 -3
- data/lib/rubygems/commands/uninstall_command.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +2 -7
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +3 -1
- data/lib/rubygems/package/tar_writer.rb +2 -3
- data/lib/rubygems/request_set.rb +25 -16
- data/lib/rubygems/requirement.rb +14 -3
- data/lib/rubygems/resolver/api_specification.rb +5 -0
- data/lib/rubygems/security.rb +6 -1
- data/lib/rubygems/util/licenses.rb +35 -4
- data/lib/rubygems/version.rb +7 -2
- data/test/rubygems/test_gem_commands_build_command.rb +2 -0
- data/test/rubygems/test_gem_commands_install_command.rb +37 -0
- data/test/rubygems/test_gem_commands_push_command.rb +20 -0
- data/test/rubygems/test_gem_install_update_options.rb +2 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +5 -1
- data/test/rubygems/test_gem_request.rb +5 -2
- data/test/rubygems/test_gem_requirement.rb +6 -0
- data/test/rubygems/test_gem_resolver_api_specification.rb +24 -0
- data/test/rubygems/test_gem_specification.rb +17 -3
- data/test/rubygems/test_gem_version.rb +29 -3
- data/util/ci +1 -1
- data/util/generate_spdx_license_list.rb +15 -6
- metadata +2 -2
@@ -95,6 +95,26 @@ class TestGemCommandsPushCommand < Gem::TestCase
|
|
95
95
|
@fetcher.last_request["Content-Type"]
|
96
96
|
end
|
97
97
|
|
98
|
+
def test_execute_allowed_push_host
|
99
|
+
@spec, @path = util_gem "freebird", "1.0.1" do |spec|
|
100
|
+
spec.metadata['allowed_push_host'] = "https://privategemserver.example"
|
101
|
+
end
|
102
|
+
|
103
|
+
@response = "Successfully registered gem: freewill (1.0.0)"
|
104
|
+
@fetcher.data["#{@spec.metadata['allowed_push_host']}/api/v1/gems"] = [@response, 200, 'OK']
|
105
|
+
@fetcher.data["#{Gem.host}/api/v1/gems"] =
|
106
|
+
['fail', 500, 'Internal Server Error']
|
107
|
+
|
108
|
+
@cmd.options[:args] = [@path]
|
109
|
+
|
110
|
+
@cmd.execute
|
111
|
+
|
112
|
+
assert_equal Net::HTTP::Post, @fetcher.last_request.class
|
113
|
+
assert_equal Gem.read_binary(@path), @fetcher.last_request.body
|
114
|
+
assert_equal "application/octet-stream",
|
115
|
+
@fetcher.last_request["Content-Type"]
|
116
|
+
end
|
117
|
+
|
98
118
|
def test_sending_when_default_host_disabled
|
99
119
|
Gem.configuration.disable_default_gem_server = true
|
100
120
|
response = "You must specify a gem server"
|
@@ -119,6 +119,8 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def test_security_policy_unknown
|
122
|
+
skip 'openssl is missing' unless defined?(OpenSSL::SSL)
|
123
|
+
|
122
124
|
@cmd.add_install_update_options
|
123
125
|
|
124
126
|
e = assert_raises OptionParser::InvalidArgument do
|
@@ -9,6 +9,10 @@ rescue LoadError => e
|
|
9
9
|
e.message =~ / -- openssl$/
|
10
10
|
end
|
11
11
|
|
12
|
+
unless defined?(OpenSSL::SSL) then
|
13
|
+
warn 'Skipping Gem::Request tests. openssl not found.'
|
14
|
+
end
|
15
|
+
|
12
16
|
require 'rubygems/remote_fetcher'
|
13
17
|
require 'rubygems/package'
|
14
18
|
require 'minitest/mock'
|
@@ -1067,4 +1071,4 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
1067
1071
|
assert_equal "/home/skillet", @fetcher.correct_for_windows_path(path)
|
1068
1072
|
end
|
1069
1073
|
|
1070
|
-
end
|
1074
|
+
end if defined?(OpenSSL::SSL)
|
@@ -4,6 +4,10 @@ require 'rubygems/request'
|
|
4
4
|
require 'ostruct'
|
5
5
|
require 'base64'
|
6
6
|
|
7
|
+
unless defined?(OpenSSL::SSL) then
|
8
|
+
warn 'Skipping Gem::Request tests. openssl not found.'
|
9
|
+
end
|
10
|
+
|
7
11
|
class TestGemRequest < Gem::TestCase
|
8
12
|
|
9
13
|
CA_CERT_FILE = cert_path 'ca'
|
@@ -491,5 +495,4 @@ ERROR: Certificate is an invalid CA certificate
|
|
491
495
|
end
|
492
496
|
end
|
493
497
|
|
494
|
-
end
|
495
|
-
|
498
|
+
end if defined?(OpenSSL::SSL)
|
@@ -28,6 +28,8 @@ class TestGemRequirement < Gem::TestCase
|
|
28
28
|
assert_requirement_equal "= 2", "2"
|
29
29
|
assert_requirement_equal "= 2", ["2"]
|
30
30
|
assert_requirement_equal "= 2", v(2)
|
31
|
+
assert_requirement_equal "2.0", "2"
|
32
|
+
assert_requirement_equal ["= 2", ">= 2"], [">= 2", "= 2"]
|
31
33
|
end
|
32
34
|
|
33
35
|
def test_create
|
@@ -69,6 +71,7 @@ class TestGemRequirement < Gem::TestCase
|
|
69
71
|
assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse('= 1')
|
70
72
|
assert_equal ['>', Gem::Version.new(1)], Gem::Requirement.parse('> 1')
|
71
73
|
assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse("=\n1")
|
74
|
+
assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse('1.0')
|
72
75
|
|
73
76
|
assert_equal ['=', Gem::Version.new(2)],
|
74
77
|
Gem::Requirement.parse(Gem::Version.new('2'))
|
@@ -226,6 +229,8 @@ class TestGemRequirement < Gem::TestCase
|
|
226
229
|
assert_satisfied_by "0.2.33", "= 0.2.33"
|
227
230
|
assert_satisfied_by "0.2.34", "> 0.2.33"
|
228
231
|
assert_satisfied_by "1.0", "= 1.0"
|
232
|
+
assert_satisfied_by "1.0.0", "= 1.0"
|
233
|
+
assert_satisfied_by "1.0", "= 1.0.0"
|
229
234
|
assert_satisfied_by "1.0", "1.0"
|
230
235
|
assert_satisfied_by "1.8.2", "> 1.8.0"
|
231
236
|
assert_satisfied_by "1.112", "> 1.111"
|
@@ -313,6 +318,7 @@ class TestGemRequirement < Gem::TestCase
|
|
313
318
|
def test_satisfied_by_boxed
|
314
319
|
refute_satisfied_by "1.3", "~> 1.4"
|
315
320
|
assert_satisfied_by "1.4", "~> 1.4"
|
321
|
+
assert_satisfied_by "1.4.0", "~> 1.4"
|
316
322
|
assert_satisfied_by "1.5", "~> 1.4"
|
317
323
|
refute_satisfied_by "2.0", "~> 1.4"
|
318
324
|
|
@@ -141,5 +141,29 @@ class TestGemResolverAPISpecification < Gem::TestCase
|
|
141
141
|
assert_equal 'a-1', spec.full_name
|
142
142
|
end
|
143
143
|
|
144
|
+
def test_spec_jruby_platform
|
145
|
+
spec_fetcher do |fetcher|
|
146
|
+
fetcher.gem 'j', 1 do |spec|
|
147
|
+
spec.platform = 'jruby'
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
dep_uri = URI(@gem_repo) + 'api/v1/dependencies'
|
152
|
+
set = Gem::Resolver::APISet.new dep_uri
|
153
|
+
data = {
|
154
|
+
:name => 'j',
|
155
|
+
:number => '1',
|
156
|
+
:platform => 'jruby',
|
157
|
+
:dependencies => [],
|
158
|
+
}
|
159
|
+
|
160
|
+
api_spec = Gem::Resolver::APISpecification.new set, data
|
161
|
+
|
162
|
+
spec = api_spec.spec
|
163
|
+
|
164
|
+
assert_kind_of Gem::Specification, spec
|
165
|
+
assert_equal 'j-1-java', spec.full_name
|
166
|
+
end
|
167
|
+
|
144
168
|
end
|
145
169
|
|
@@ -2431,16 +2431,16 @@ Gem::Specification.new do |s|
|
|
2431
2431
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
2432
2432
|
s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
|
2433
2433
|
s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
|
2434
|
-
s.add_runtime_dependency(%q<pqa>.freeze, [\"
|
2434
|
+
s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
|
2435
2435
|
else
|
2436
2436
|
s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
|
2437
2437
|
s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
|
2438
|
-
s.add_dependency(%q<pqa>.freeze, [\"
|
2438
|
+
s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
|
2439
2439
|
end
|
2440
2440
|
else
|
2441
2441
|
s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
|
2442
2442
|
s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
|
2443
|
-
s.add_dependency(%q<pqa>.freeze, [\"
|
2443
|
+
s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
|
2444
2444
|
end
|
2445
2445
|
end
|
2446
2446
|
SPEC
|
@@ -2973,6 +2973,20 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
|
2973
2973
|
warning
|
2974
2974
|
end
|
2975
2975
|
|
2976
|
+
def test_validate_license_with_invalid_exception
|
2977
|
+
util_setup_validate
|
2978
|
+
|
2979
|
+
use_ui @ui do
|
2980
|
+
@a1.licenses = ['GPL-2.0+ WITH Autocofn-exception-2.0']
|
2981
|
+
@a1.validate
|
2982
|
+
end
|
2983
|
+
|
2984
|
+
assert_match <<-warning, @ui.error
|
2985
|
+
WARNING: license value 'GPL-2.0+ WITH Autocofn-exception-2.0' is invalid. Use a license identifier from
|
2986
|
+
http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
|
2987
|
+
warning
|
2988
|
+
end
|
2989
|
+
|
2976
2990
|
def test_validate_license_gives_suggestions
|
2977
2991
|
util_setup_validate
|
2978
2992
|
|
@@ -46,7 +46,11 @@ class TestGemVersion < Gem::TestCase
|
|
46
46
|
def test_class_correct
|
47
47
|
assert_equal true, Gem::Version.correct?("5.1")
|
48
48
|
assert_equal false, Gem::Version.correct?("an incorrect version")
|
49
|
-
|
49
|
+
|
50
|
+
expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
|
51
|
+
assert_output nil, expected do
|
52
|
+
Gem::Version.correct?(nil)
|
53
|
+
end
|
50
54
|
end
|
51
55
|
|
52
56
|
def test_class_new_subclass
|
@@ -158,11 +162,25 @@ class TestGemVersion < Gem::TestCase
|
|
158
162
|
|
159
163
|
def test_approximate_recommendation
|
160
164
|
assert_approximate_equal "~> 1.0", "1"
|
165
|
+
assert_approximate_satisfies_itself "1"
|
166
|
+
|
161
167
|
assert_approximate_equal "~> 1.0", "1.0"
|
168
|
+
assert_approximate_satisfies_itself "1.0"
|
169
|
+
|
162
170
|
assert_approximate_equal "~> 1.2", "1.2"
|
171
|
+
assert_approximate_satisfies_itself "1.2"
|
172
|
+
|
163
173
|
assert_approximate_equal "~> 1.2", "1.2.0"
|
174
|
+
assert_approximate_satisfies_itself "1.2.0"
|
175
|
+
|
164
176
|
assert_approximate_equal "~> 1.2", "1.2.3"
|
165
|
-
|
177
|
+
assert_approximate_satisfies_itself "1.2.3"
|
178
|
+
|
179
|
+
assert_approximate_equal "~> 1.2.a", "1.2.3.a.4"
|
180
|
+
assert_approximate_satisfies_itself "1.2.3.a.4"
|
181
|
+
|
182
|
+
assert_approximate_equal "~> 1.9.a", "1.9.0.dev"
|
183
|
+
assert_approximate_satisfies_itself "1.9.0.dev"
|
166
184
|
end
|
167
185
|
|
168
186
|
def test_to_s
|
@@ -198,12 +216,20 @@ class TestGemVersion < Gem::TestCase
|
|
198
216
|
assert v(version).prerelease?, "#{version} is a prerelease"
|
199
217
|
end
|
200
218
|
|
201
|
-
# Assert that +expected+ is the "approximate" recommendation for +version
|
219
|
+
# Assert that +expected+ is the "approximate" recommendation for +version+.
|
202
220
|
|
203
221
|
def assert_approximate_equal expected, version
|
204
222
|
assert_equal expected, v(version).approximate_recommendation
|
205
223
|
end
|
206
224
|
|
225
|
+
# Assert that the "approximate" recommendation for +version+ satifies +version+.
|
226
|
+
|
227
|
+
def assert_approximate_satisfies_itself version
|
228
|
+
gem_version = v(version)
|
229
|
+
|
230
|
+
assert Gem::Requirement.new(gem_version.approximate_recommendation).satisfied_by?(gem_version)
|
231
|
+
end
|
232
|
+
|
207
233
|
# Assert that bumping the +unbumped+ version yields the +expected+.
|
208
234
|
|
209
235
|
def assert_bumped_version_equal expected, unbumped
|
data/util/ci
CHANGED
@@ -49,7 +49,7 @@ when %w(before_script)
|
|
49
49
|
if TOOL.rubygems?
|
50
50
|
run('gem', %W(uninstall executable-hooks gem-wrappers -x --force -i #{`gem env home`.strip}@global))
|
51
51
|
run('gem', %W(install rake -v #{'~> 10.5'} --no-document))
|
52
|
-
run('gem', %W(install bundler -v #{'1.16.
|
52
|
+
run('gem', %W(install bundler -v #{'1.16.6'} --no-document))
|
53
53
|
run('gem', %W(install hoe -v #{'3.15.0'} --no-document))
|
54
54
|
run('gem', %w(install hoe-travis --no-document))
|
55
55
|
run('gem', %W(install minitest -v #{'~> 4.7'} --no-document))
|
@@ -3,10 +3,14 @@ require 'json'
|
|
3
3
|
require 'net/http'
|
4
4
|
require 'uri'
|
5
5
|
|
6
|
-
|
7
|
-
licenses = JSON.parse(
|
6
|
+
licenses_json = Net::HTTP.get(URI('https://spdx.org/licenses/licenses.json'))
|
7
|
+
licenses = JSON.parse(licenses_json)['licenses'].map do |licenseObject|
|
8
8
|
licenseObject['licenseId']
|
9
9
|
end
|
10
|
+
exceptions_json = Net::HTTP.get(URI('https://spdx.org/licenses/exceptions.json'))
|
11
|
+
exceptions = JSON.parse(exceptions_json)['exceptions'].map do |exceptionObject|
|
12
|
+
exceptionObject['licenseExceptionId']
|
13
|
+
end
|
10
14
|
|
11
15
|
open 'lib/rubygems/util/licenses.rb', 'w' do |io|
|
12
16
|
io.write <<-RUBY
|
@@ -20,16 +24,21 @@ class Gem::Licenses
|
|
20
24
|
|
21
25
|
# Software Package Data Exchange (SPDX) standard open-source software
|
22
26
|
# license identifiers
|
23
|
-
|
27
|
+
LICENSE_IDENTIFIERS = %w(
|
24
28
|
#{licenses.sort.join "\n "}
|
25
29
|
).freeze
|
26
30
|
|
31
|
+
# exception identifiers
|
32
|
+
EXCEPTION_IDENTIFIERS = %w(
|
33
|
+
#{exceptions.sort.join "\n "}
|
34
|
+
).freeze
|
35
|
+
|
27
36
|
REGEXP = %r{
|
28
37
|
\\A
|
29
38
|
(
|
30
|
-
\#{Regexp.union(
|
39
|
+
\#{Regexp.union(LICENSE_IDENTIFIERS)}
|
31
40
|
\\+?
|
32
|
-
(\\s WITH \\s
|
41
|
+
(\\s WITH \\s \#{Regexp.union(EXCEPTION_IDENTIFIERS)})?
|
33
42
|
| \#{NONSTANDARD}
|
34
43
|
)
|
35
44
|
\\Z
|
@@ -40,7 +49,7 @@ class Gem::Licenses
|
|
40
49
|
end
|
41
50
|
|
42
51
|
def self.suggestions(license)
|
43
|
-
by_distance =
|
52
|
+
by_distance = LICENSE_IDENTIFIERS.group_by do |identifier|
|
44
53
|
levenshtein_distance(identifier, license)
|
45
54
|
end
|
46
55
|
lowest = by_distance.keys.min
|
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: 2.7.
|
4
|
+
version: 2.7.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Weirich
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-11-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: builder
|