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.

Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +51 -0
  3. data/Rakefile +12 -2
  4. data/bundler/CHANGELOG.md +80 -0
  5. data/bundler/README.md +1 -1
  6. data/bundler/bundler.gemspec +2 -1
  7. data/bundler/lib/bundler.rb +10 -6
  8. data/bundler/lib/bundler/build_metadata.rb +19 -2
  9. data/bundler/lib/bundler/cli.rb +1 -1
  10. data/bundler/lib/bundler/cli/exec.rb +1 -0
  11. data/bundler/lib/bundler/cli/update.rb +3 -3
  12. data/bundler/lib/bundler/current_ruby.rb +8 -1
  13. data/bundler/lib/bundler/definition.rb +18 -13
  14. data/bundler/lib/bundler/dep_proxy.rb +2 -2
  15. data/bundler/lib/bundler/dependency.rb +1 -0
  16. data/bundler/lib/bundler/deprecate.rb +2 -1
  17. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  18. data/bundler/lib/bundler/env.rb +10 -8
  19. data/bundler/lib/bundler/fetcher.rb +1 -1
  20. data/bundler/lib/bundler/fetcher/downloader.rb +10 -5
  21. data/bundler/lib/bundler/gem_helper.rb +1 -1
  22. data/bundler/lib/bundler/gem_version_promoter.rb +12 -0
  23. data/bundler/lib/bundler/injector.rb +1 -1
  24. data/bundler/lib/bundler/installer/gem_installer.rb +6 -4
  25. data/bundler/lib/bundler/installer/parallel_installer.rb +1 -1
  26. data/bundler/lib/bundler/lazy_specification.rb +1 -1
  27. data/bundler/lib/bundler/mirror.rb +2 -2
  28. data/bundler/lib/bundler/plugin.rb +2 -2
  29. data/bundler/lib/bundler/plugin/index.rb +1 -1
  30. data/bundler/lib/bundler/process_lock.rb +1 -1
  31. data/bundler/lib/bundler/resolver.rb +10 -9
  32. data/bundler/lib/bundler/resolver/spec_group.rb +0 -4
  33. data/bundler/lib/bundler/ruby_version.rb +1 -1
  34. data/bundler/lib/bundler/runtime.rb +1 -1
  35. data/bundler/lib/bundler/shared_helpers.rb +15 -3
  36. data/bundler/lib/bundler/source/metadata.rb +1 -1
  37. data/bundler/lib/bundler/source/rubygems.rb +6 -2
  38. data/bundler/lib/bundler/source/rubygems/remote.rb +4 -1
  39. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -0
  40. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +2 -0
  41. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -1
  42. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +7 -2
  43. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  44. data/bundler/lib/bundler/version.rb +1 -1
  45. data/bundler/man/bundle-binstubs.ronn +1 -1
  46. data/bundler/man/bundle-config.ronn +4 -4
  47. data/bundler/man/bundle-exec.ronn +2 -2
  48. data/bundler/man/bundle-gem.ronn +1 -1
  49. data/bundler/man/bundle-install.ronn +12 -3
  50. data/bundler/man/bundle-lock.ronn +1 -1
  51. data/bundler/man/bundle-outdated.ronn +1 -1
  52. data/bundler/man/bundle-package.ronn +3 -3
  53. data/bundler/man/bundle-show.ronn +3 -2
  54. data/bundler/man/bundle-update.ronn +18 -14
  55. data/bundler/man/bundle-viz.ronn +1 -1
  56. data/bundler/man/bundle.ronn +18 -18
  57. data/bundler/man/gemfile.5.ronn +23 -8
  58. data/lib/rubygems.rb +3 -3
  59. data/lib/rubygems/commands/install_command.rb +7 -0
  60. data/lib/rubygems/commands/push_command.rb +36 -3
  61. data/lib/rubygems/commands/uninstall_command.rb +1 -1
  62. data/lib/rubygems/core_ext/kernel_require.rb +2 -7
  63. data/lib/rubygems/install_update_options.rb +1 -1
  64. data/lib/rubygems/package/tar_header.rb +3 -1
  65. data/lib/rubygems/package/tar_writer.rb +2 -3
  66. data/lib/rubygems/request_set.rb +25 -16
  67. data/lib/rubygems/requirement.rb +14 -3
  68. data/lib/rubygems/resolver/api_specification.rb +5 -0
  69. data/lib/rubygems/security.rb +6 -1
  70. data/lib/rubygems/util/licenses.rb +35 -4
  71. data/lib/rubygems/version.rb +7 -2
  72. data/test/rubygems/test_gem_commands_build_command.rb +2 -0
  73. data/test/rubygems/test_gem_commands_install_command.rb +37 -0
  74. data/test/rubygems/test_gem_commands_push_command.rb +20 -0
  75. data/test/rubygems/test_gem_install_update_options.rb +2 -0
  76. data/test/rubygems/test_gem_remote_fetcher.rb +5 -1
  77. data/test/rubygems/test_gem_request.rb +5 -2
  78. data/test/rubygems/test_gem_requirement.rb +6 -0
  79. data/test/rubygems/test_gem_resolver_api_specification.rb +24 -0
  80. data/test/rubygems/test_gem_specification.rb +17 -3
  81. data/test/rubygems/test_gem_version.rb +29 -3
  82. data/util/ci +1 -1
  83. data/util/generate_spdx_license_list.rb +15 -6
  84. 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, [\"<= 0.6\", \"> 0.4\"])
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, [\"<= 0.6\", \"> 0.4\"])
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, [\"<= 0.6\", \"> 0.4\"])
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
- assert_equal false, Gem::Version.correct?(nil)
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
- assert_approximate_equal "~> 1.2", "1.2.3.a.4"
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.2'} --no-document))
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
- json = Net::HTTP.get(URI('https://spdx.org/licenses/licenses.json'))
7
- licenses = JSON.parse(json)['licenses'].map do |licenseObject|
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
- IDENTIFIERS = %w(
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(IDENTIFIERS)}
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 = IDENTIFIERS.group_by do |identifier|
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.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-05-18 00:00:00.000000000 Z
13
+ date: 2018-11-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder