rubygems-update 2.1.0.rc.2 → 2.1.0

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.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7da132d518c17a925f7ab5d00e1017bd8cce49d4
4
- data.tar.gz: ee8eb91dc1ea06f0784dc4924a2563d109ce0138
3
+ metadata.gz: 55bcc2565aada10c6c7710d6e7838ea85f6c1f94
4
+ data.tar.gz: c20b2a65ba400f0f6d870f0337d48982d61e25cf
5
5
  SHA512:
6
- metadata.gz: 66a6e4769192f4c73ea72e465228dfee2e3145c0bcb836398a093deb621bf7be0650ca6ca9ac4d1146887997b179aac891a007017dea8749276ae8bafc5b19b8
7
- data.tar.gz: ae9cc7d9106c3d141b2ea1100d279f1f94b05cdd4e817dc8e22795415df9b67a8a504b0d410232b9c4ad8bc0928e3cbed8afdc41cbf0e6c76e9479ea27a1ff0c
6
+ metadata.gz: d3d07022f951f289b684e8591b2f5d3aa5f0db7246f04169424f5641f559ce1dad1d78ed6e83c0e29871c71284609ebefda43a9f98ba5bb43b8711af0446ff88
7
+ data.tar.gz: d1a3cb1b550833963887bd2701a6daabf9f8c7d0b5bedd5dc14146fe00f6e4829ab087d90b1ddef33cdf8d6ab67e4ea3f76489f75bcd3973c1c56e9fbfe8219f
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.autotest CHANGED
@@ -6,7 +6,7 @@ require 'autotest/restart'
6
6
  require 'autotest/isolate'
7
7
 
8
8
  Autotest.add_hook :initialize do |at|
9
- at.testlib = 'minitest/autorun'
9
+ at.testlib = ''
10
10
 
11
11
  at.add_exception %r%/\.git/%
12
12
  at.add_exception %r%/\.svn/%
@@ -0,0 +1,36 @@
1
+ = Algorithmic complexity vulnerability in RubyGems 2.0.7 and older
2
+
3
+ RubyGems validates versions with a regular expression that is vulnerable to
4
+ denial of service due to a backtracking regular expression. For specially
5
+ crafted RubyGems versions attackers can cause denial of service through CPU
6
+ consumption.
7
+
8
+ RubyGems versions 2.0.7 and older, 2.1.0.rc.1 and 2.1.0.rc.2 are vulnerable.
9
+
10
+ Ruby versions 1.9.0 through 2.0.0p247 are vulnerable as they contain embedded
11
+ versions of RubyGems.
12
+
13
+ It does not appear to be possible to exploit this vulnerability by installing a
14
+ gem for RubyGems 1.8.x or 2.0.x. Vulnerable uses of RubyGems API include
15
+ packaging a gem (through `gem build`, Gem::Package or Gem::PackageTask),
16
+ sending user input to Gem::Version.new, Gem::Version.correct? or use of the
17
+ Gem::Version::VERSION_PATTERN or Gem::Version::ANCHORED_VERSION_PATTERN
18
+ constants.
19
+
20
+ Notably, users of bundler that install gems from git are vulnerable if a
21
+ malicious author changes the gemspec to an invalid version.
22
+
23
+ The vulnerability can be fixed by changing the first grouping to an atomic
24
+ grouping in Gem::Version::VERSION_PATTERN in lib/rubygems/version.rb. For
25
+ RubyGems 2.0.x:
26
+
27
+ - VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
28
+ + VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
29
+
30
+ For RubyGems 1.8.x:
31
+
32
+ - VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*' # :nodoc:
33
+ + VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*' # :nodoc:
34
+
35
+ This vulnerability was discovered by Damir Sharipov <dammer2k@gmail.com>
36
+
@@ -1,6 +1,13 @@
1
1
  # coding: UTF-8
2
2
 
3
- === 2.1.0.rc.2
3
+ === 2.1.0 / 2013-09-09
4
+
5
+ Security fixes:
6
+
7
+ * RubyGems 2.0.7 and earlier are vulnerable to excessive CPU usage due to a
8
+ backtracking in Gem::Version validation. See CVE-2013-4287 for full details
9
+ including vulnerable APIs. Fixed versions include 2.0.8, 1.8.26 and
10
+ 1.8.23.1 (for Ruby 1.9.3). Issue #626 by Damir Sharipov.
4
11
 
5
12
  Major enhancements:
6
13
 
@@ -83,9 +90,15 @@ Minor enhancements:
83
90
  Bug fixes:
84
91
 
85
92
  * rubygems_plugin.rb files are now only loaded from the latest installed gem.
93
+ * Fixed Gem.clear_paths when Security is defined at top-level. Pull request
94
+ #625 by elarkin
95
+ * Fixed credential creation for `gem push` when `--host` is not given. Pull
96
+ request #622 by Arthur Nogueira Neves
86
97
 
87
98
  === 2.0.7 / 2013-08-15
88
99
 
100
+ Bug fixes:
101
+
89
102
  * Extensions may now be built in parallel (therefore gems may be installed in
90
103
  parallel). Bug #607 by Hemant Kumar.
91
104
  * Changed broken link to RubyGems Bookshelf to point to RubyGems guides. Ruby
@@ -1,5 +1,6 @@
1
1
  .autotest
2
2
  .document
3
+ CVE-2013-4287.txt
3
4
  History.txt
4
5
  LICENSE.txt
5
6
  MIT.txt
@@ -230,7 +231,12 @@ test/rubygems/test_gem_dependency.rb
230
231
  test/rubygems/test_gem_dependency_installer.rb
231
232
  test/rubygems/test_gem_dependency_list.rb
232
233
  test/rubygems/test_gem_dependency_resolver.rb
234
+ test/rubygems/test_gem_dependency_resolver_api_specification.rb
233
235
  test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb
236
+ test/rubygems/test_gem_dependency_resolver_index_set.rb
237
+ test/rubygems/test_gem_dependency_resolver_index_specification.rb
238
+ test/rubygems/test_gem_dependency_resolver_installed_specification.rb
239
+ test/rubygems/test_gem_dependency_resolver_installer_set.rb
234
240
  test/rubygems/test_gem_doctor.rb
235
241
  test/rubygems/test_gem_ext_builder.rb
236
242
  test/rubygems/test_gem_ext_cmake_builder.rb
data/Rakefile CHANGED
@@ -56,7 +56,9 @@ hoe = Hoe.spec 'rubygems-update' do
56
56
  dependency 'rake', '~> 0.9.3', :dev
57
57
  dependency 'minitest', '~> 4.0', :dev
58
58
 
59
- self.extra_rdoc_files = Dir["*.rdoc"]
59
+ self.extra_rdoc_files = Dir["*.rdoc"] + %w[
60
+ CVE-2013-4287.txt
61
+ ]
60
62
 
61
63
  spec_extras['rdoc_options'] = proc do |rdoc_options|
62
64
  rdoc_options << "--title=RubyGems Update Documentation"
@@ -8,7 +8,7 @@
8
8
  require 'rbconfig'
9
9
 
10
10
  module Gem
11
- VERSION = '2.1.0.rc.2'
11
+ VERSION = '2.1.0'
12
12
  end
13
13
 
14
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -315,7 +315,7 @@ module Gem
315
315
  @paths = nil
316
316
  @user_home = nil
317
317
  Gem::Specification.reset
318
- Gem::Security.reset if const_defined? :Security
318
+ Gem::Security.reset if defined?(Gem::Security)
319
319
  end
320
320
 
321
321
  ##
@@ -79,7 +79,9 @@ class Gem::DependencyResolver
79
79
  needed = nil
80
80
 
81
81
  @needed.reverse_each do |n|
82
- needed = Gem::List.new(Gem::DependencyResolver::DependencyRequest.new(n, nil), needed)
82
+ request = Gem::DependencyResolver::DependencyRequest.new n, nil
83
+
84
+ needed = Gem::List.new request, needed
83
85
  end
84
86
 
85
87
  res = resolve_for needed, nil
@@ -162,7 +164,9 @@ class Gem::DependencyResolver
162
164
 
163
165
  # Sort them so that we try the highest versions
164
166
  # first.
165
- possible = possible.sort_by { |s| [s.source, s.version] }
167
+ possible = possible.sort_by do |s|
168
+ [s.source, s.version, s.platform == Gem::Platform::RUBY ? -1 : 1]
169
+ end
166
170
 
167
171
  # We track the conflicts seen so that we can report them
168
172
  # to help the user figure out how to fix the situation.
@@ -8,6 +8,7 @@ class Gem::DependencyResolver::APISpecification
8
8
 
9
9
  attr_reader :dependencies
10
10
  attr_reader :name
11
+ attr_reader :platform
11
12
  attr_reader :set # :nodoc:
12
13
  attr_reader :version
13
14
 
@@ -15,6 +16,7 @@ class Gem::DependencyResolver::APISpecification
15
16
  @set = set
16
17
  @name = api_data[:name]
17
18
  @version = Gem::Version.new api_data[:number]
19
+ @platform = api_data[:platform]
18
20
  @dependencies = api_data[:dependencies].map do |name, ver|
19
21
  Gem::Dependency.new name, ver.split(/\s*,\s*/)
20
22
  end
@@ -25,6 +27,7 @@ class Gem::DependencyResolver::APISpecification
25
27
  @set == other.set and
26
28
  @name == other.name and
27
29
  @version == other.version and
30
+ @platform == other.platform and
28
31
  @dependencies == other.dependencies
29
32
  end
30
33
 
@@ -43,9 +43,14 @@ class Gem::DependencyResolver::IndexSet
43
43
  # Called from IndexSpecification to get a true Specification
44
44
  # object.
45
45
 
46
- def load_spec name, ver, source
47
- key = "#{name}-#{ver}"
48
- @specs[key] ||= source.fetch_spec(Gem::NameTuple.new(name, ver))
46
+ def load_spec name, ver, platform, source
47
+ key = "#{name}-#{ver}-#{platform}"
48
+
49
+ @specs.fetch key do
50
+ tuple = Gem::NameTuple.new name, ver, platform
51
+
52
+ @specs[key] = source.fetch_spec tuple
53
+ end
49
54
  end
50
55
 
51
56
  ##
@@ -8,6 +8,8 @@ class Gem::DependencyResolver::IndexSpecification
8
8
 
9
9
  attr_reader :name
10
10
 
11
+ attr_reader :platform
12
+
11
13
  attr_reader :source
12
14
 
13
15
  attr_reader :version
@@ -39,14 +41,19 @@ class Gem::DependencyResolver::IndexSpecification
39
41
  q.breakable
40
42
  q.text full_name
41
43
 
44
+ unless Gem::Platform::RUBY == @platform then
45
+ q.breakable
46
+ q.text @platform
47
+ end
48
+
42
49
  q.breakable
43
- q.text ' source '
50
+ q.text 'source '
44
51
  q.pp @source
45
52
  end
46
53
  end
47
54
 
48
55
  def spec
49
- @spec ||= @set.load_spec(@name, @version, @source)
56
+ @spec ||= @set.load_spec(@name, @version, @platform, @source)
50
57
  end
51
58
 
52
59
  end
@@ -26,6 +26,10 @@ class Gem::DependencyResolver::InstalledSpecification
26
26
  @spec.name
27
27
  end
28
28
 
29
+ def platform
30
+ @spec.platform
31
+ end
32
+
29
33
  def source
30
34
  @source ||= Gem::Source::Installed.new
31
35
  end
@@ -115,9 +115,14 @@ class Gem::DependencyResolver::InstallerSet
115
115
  # Called from IndexSpecification to get a true Specification
116
116
  # object.
117
117
 
118
- def load_spec name, ver, source
119
- key = "#{name}-#{ver}"
120
- @specs[key] ||= source.fetch_spec Gem::NameTuple.new name, ver
118
+ def load_spec name, ver, platform, source
119
+ key = "#{name}-#{ver}-#{platform}"
120
+
121
+ @specs.fetch key do
122
+ tuple = Gem::NameTuple.new name, ver, platform
123
+
124
+ @specs[key] = source.fetch_spec tuple
125
+ end
121
126
  end
122
127
 
123
128
  ##
@@ -77,7 +77,8 @@ module Gem::GemcutterUtilities
77
77
  # Signs in with the RubyGems API at +sign_in_host+ and sets the rubygems API
78
78
  # key.
79
79
 
80
- def sign_in sign_in_host = self.host
80
+ def sign_in sign_in_host = nil
81
+ sign_in_host ||= self.host
81
82
  return if Gem.configuration.rubygems_api_key
82
83
 
83
84
  pretty_host = if Gem::DEFAULT_HOST == sign_in_host then
@@ -28,7 +28,10 @@ class Gem::RequestSet
28
28
 
29
29
  @always_install = []
30
30
  @development = false
31
+ @requests = []
31
32
  @soft_missing = false
33
+ @sorted = nil
34
+ @specs = nil
32
35
 
33
36
  yield self if block_given?
34
37
  end
@@ -200,8 +200,11 @@ class Gem::SpecFetcher
200
200
  when :released
201
201
  tuples_for source, :released
202
202
  when :complete
203
- tuples_for(source, :prerelease, true) +
203
+ names =
204
+ tuples_for(source, :prerelease, true) +
204
205
  tuples_for(source, :released)
206
+
207
+ names.sort
205
208
  when :prerelease
206
209
  tuples_for(source, :prerelease)
207
210
  else
@@ -34,7 +34,7 @@ class Date; end
34
34
  # s.homepage = 'https://rubygems.org/gems/example'
35
35
  # end
36
36
  #
37
- # Starting in RubyGems 1.9.0, a Specification can hold arbitrary
37
+ # Starting in RubyGems 2.0, a Specification can hold arbitrary
38
38
  # metadata. This metadata is accessed via Specification#metadata
39
39
  # and has the following restrictions:
40
40
  #
@@ -2097,7 +2097,6 @@ class Gem::Specification < Gem::BasicSpecification
2097
2097
  # Returns an object you can use to sort specifications in #sort_by.
2098
2098
 
2099
2099
  def sort_obj
2100
- # TODO: this is horrible. Deprecate it.
2101
2100
  [@name, @version, @new_platform == Gem::Platform::RUBY ? -1 : 1]
2102
2101
  end
2103
2102
 
@@ -1097,7 +1097,11 @@ Also, a list:
1097
1097
 
1098
1098
  class StaticSet
1099
1099
  def initialize(specs)
1100
- @specs = specs.sort_by { |s| s.full_name }
1100
+ @specs = specs
1101
+ end
1102
+
1103
+ def add spec
1104
+ @specs << spec
1101
1105
  end
1102
1106
 
1103
1107
  def find_spec(dep)
@@ -1110,6 +1114,15 @@ Also, a list:
1110
1114
  @specs.find_all { |s| dep.matches_spec? s }
1111
1115
  end
1112
1116
 
1117
+ def load_spec name, ver, platform, source
1118
+ dep = Gem::Dependency.new name, ver
1119
+ spec = find_spec dep
1120
+
1121
+ Gem::Specification.new spec.name, spec.version do |s|
1122
+ s.platform = spec.platform
1123
+ end
1124
+ end
1125
+
1113
1126
  def prefetch(reqs)
1114
1127
  end
1115
1128
  end
@@ -147,7 +147,7 @@ class Gem::Version
147
147
 
148
148
  # FIX: These are only used once, in .correct?. Do they deserve to be
149
149
  # constants?
150
- VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
150
+ VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
151
151
  ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})*\s*\z/ # :nodoc:
152
152
 
153
153
  ##
@@ -66,6 +66,27 @@ class TestGemDependencyResolver < Gem::TestCase
66
66
  assert_set [a2], res.resolve
67
67
  end
68
68
 
69
+ def test_picks_best_platform
70
+ is = Gem::DependencyResolver::IndexSpecification
71
+ a2_p = quick_spec 'a' do |s| s.platform = Gem::Platform.local end
72
+ version = Gem::Version.new 2
73
+ source = Gem::Source.new @gem_repo
74
+
75
+ s = set
76
+
77
+ a2 = is.new s, 'a', version, source, Gem::Platform::RUBY
78
+ a2_p = is.new s, 'a', version, source, Gem::Platform.local.to_s
79
+
80
+ s.add a2_p
81
+ s.add a2
82
+
83
+ ad = make_dep "a"
84
+
85
+ res = Gem::DependencyResolver.new([ad], s)
86
+
87
+ assert_set [a2_p], res.resolve
88
+ end
89
+
69
90
  def test_only_returns_spec_once
70
91
  a1 = util_spec "a", "1", "c" => "= 1"
71
92
  b1 = util_spec "b", "1", "c" => "= 1"
@@ -0,0 +1,33 @@
1
+ require 'rubygems/test_case'
2
+ require 'rubygems/dependency_resolver'
3
+
4
+ class TestGemDependencyResolverAPISpecification < Gem::TestCase
5
+
6
+ def test_initialize
7
+ set = Gem::DependencyResolver::APISet.new
8
+ data = {
9
+ :name => 'rails',
10
+ :number => '3.0.3',
11
+ :platform => 'ruby',
12
+ :dependencies => [
13
+ ['bundler', '~> 1.0'],
14
+ ['railties', '= 3.0.3'],
15
+ ],
16
+ }
17
+
18
+ spec = Gem::DependencyResolver::APISpecification.new set, data
19
+
20
+ assert_equal 'rails', spec.name
21
+ assert_equal Gem::Version.new('3.0.3'), spec.version
22
+ assert_equal Gem::Platform::RUBY, spec.platform
23
+
24
+ expected = [
25
+ Gem::Dependency.new('bundler', '~> 1.0'),
26
+ Gem::Dependency.new('railties', '= 3.0.3'),
27
+ ]
28
+
29
+ assert_equal expected, spec.dependencies
30
+ end
31
+
32
+ end
33
+
@@ -0,0 +1,53 @@
1
+ require 'rubygems/test_case'
2
+ require 'rubygems/dependency_resolver'
3
+
4
+ class TestGemDependencyResolverIndexSet < Gem::TestCase
5
+
6
+ def test_load_spec
7
+ @fetcher = Gem::FakeFetcher.new
8
+ Gem::RemoteFetcher.fetcher = @fetcher
9
+
10
+ a_2 = quick_spec 'a', 2
11
+ a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end
12
+
13
+ Gem::Specification.add_specs a_2, a_2_p
14
+
15
+ util_setup_spec_fetcher a_2, a_2_p
16
+
17
+ source = Gem::Source.new @gem_repo
18
+ version = v 2
19
+
20
+ set = Gem::DependencyResolver::IndexSet.new
21
+
22
+ spec = set.load_spec 'a', version, Gem::Platform.local, source
23
+
24
+ assert_equal a_2_p.full_name, spec.full_name
25
+ end
26
+
27
+ def test_load_spec_cached
28
+ @fetcher = Gem::FakeFetcher.new
29
+ Gem::RemoteFetcher.fetcher = @fetcher
30
+
31
+ a_2 = quick_spec 'a', 2
32
+ a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end
33
+
34
+ Gem::Specification.add_specs a_2, a_2_p
35
+
36
+ util_setup_spec_fetcher a_2, a_2_p
37
+
38
+ source = Gem::Source.new @gem_repo
39
+ version = v 2
40
+
41
+ set = Gem::DependencyResolver::IndexSet.new
42
+
43
+ first = set.load_spec 'a', version, Gem::Platform.local, source
44
+
45
+ util_setup_spec_fetcher # clear
46
+
47
+ second = set.load_spec 'a', version, Gem::Platform.local, source
48
+
49
+ assert_same first, second
50
+ end
51
+
52
+ end
53
+
@@ -0,0 +1,46 @@
1
+ require 'rubygems/test_case'
2
+ require 'rubygems/dependency_resolver'
3
+
4
+ class TestGemDependencyResolverIndexSpecification < Gem::TestCase
5
+
6
+ def test_initialize
7
+ set = Gem::DependencyResolver::IndexSet.new
8
+ source = Gem::Source.new @gem_repo
9
+ version = Gem::Version.new '3.0.3'
10
+
11
+ spec = Gem::DependencyResolver::IndexSpecification.new(
12
+ set, 'rails', version, source, Gem::Platform::RUBY)
13
+
14
+ assert_equal 'rails', spec.name
15
+ assert_equal version, spec.version
16
+ assert_equal Gem::Platform::RUBY, spec.platform
17
+
18
+ assert_equal source, spec.source
19
+ end
20
+
21
+ def test_spec
22
+ @fetcher = Gem::FakeFetcher.new
23
+ Gem::RemoteFetcher.fetcher = @fetcher
24
+
25
+ a_2 = quick_spec 'a', 2
26
+ a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end
27
+
28
+ Gem::Specification.add_specs a_2, a_2_p
29
+
30
+ util_setup_spec_fetcher a_2, a_2_p
31
+
32
+ source = Gem::Source.new @gem_repo
33
+ version = v 2
34
+
35
+ set = Gem::DependencyResolver::IndexSet.new
36
+ i_spec = Gem::DependencyResolver::IndexSpecification.new \
37
+ set, 'a', version, source, Gem::Platform.local
38
+
39
+ spec = i_spec.spec
40
+
41
+ assert_equal a_2_p.full_name, spec.full_name
42
+ end
43
+
44
+
45
+ end
46
+
@@ -0,0 +1,19 @@
1
+ require 'rubygems/test_case'
2
+ require 'rubygems/dependency_resolver'
3
+
4
+ class TestGemDependencyResolverInstalledSpecification < Gem::TestCase
5
+
6
+ def test_initialize
7
+ set = Gem::DependencyResolver::CurrentSet.new
8
+
9
+ source_spec = quick_spec 'a'
10
+
11
+ spec = Gem::DependencyResolver::InstalledSpecification.new set, source_spec
12
+
13
+ assert_equal 'a', spec.name
14
+ assert_equal Gem::Version.new(2), spec.version
15
+ assert_equal Gem::Platform::RUBY, spec.platform
16
+ end
17
+
18
+ end
19
+
@@ -0,0 +1,28 @@
1
+ require 'rubygems/test_case'
2
+ require 'rubygems/dependency_resolver'
3
+
4
+ class TestGemDependencyResolverInstallerSet < Gem::TestCase
5
+
6
+ def test_load_spec
7
+ @fetcher = Gem::FakeFetcher.new
8
+ Gem::RemoteFetcher.fetcher = @fetcher
9
+
10
+ a_2 = quick_spec 'a', 2
11
+ a_2_p = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end
12
+
13
+ Gem::Specification.add_specs a_2, a_2_p
14
+
15
+ util_setup_spec_fetcher a_2, a_2_p
16
+
17
+ source = Gem::Source.new @gem_repo
18
+ version = v 2
19
+
20
+ set = Gem::DependencyResolver::InstallerSet.new :remote
21
+
22
+ spec = set.load_spec 'a', version, Gem::Platform.local, source
23
+
24
+ assert_equal a_2_p.full_name, spec.full_name
25
+ end
26
+
27
+ end
28
+
@@ -101,7 +101,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
101
101
  def test_sign_in_with_host
102
102
  api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
103
103
 
104
- util_sign_in [api_key, 200, 'OK'], 'http://example.com', :param
104
+ util_sign_in [api_key, 200, 'OK'], 'http://example.com', ['http://example.com']
105
105
 
106
106
  assert_match "Enter your http://example.com credentials.",
107
107
  @sign_in_ui.output
@@ -112,6 +112,20 @@ class TestGemGemcutterUtilities < Gem::TestCase
112
112
  assert_equal api_key, credentials[:rubygems_api_key]
113
113
  end
114
114
 
115
+ def test_sign_in_with_host_nil
116
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
117
+
118
+ util_sign_in [api_key, 200, 'OK'], nil, [nil]
119
+
120
+ assert_match "Enter your RubyGems.org credentials.",
121
+ @sign_in_ui.output
122
+ assert @fetcher.last_request["authorization"]
123
+ assert_match %r{Signed in.}, @sign_in_ui.output
124
+
125
+ credentials = YAML.load_file Gem.configuration.credentials_path
126
+ assert_equal api_key, credentials[:rubygems_api_key]
127
+ end
128
+
115
129
  def test_sign_in_with_host_ENV
116
130
  api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
117
131
  util_sign_in [api_key, 200, 'OK'], 'http://example.com'
@@ -163,14 +177,14 @@ class TestGemGemcutterUtilities < Gem::TestCase
163
177
  assert_match %r{Access Denied.}, @sign_in_ui.output
164
178
  end
165
179
 
166
- def util_sign_in response, host = nil, style = :ENV
180
+ def util_sign_in response, host = nil, args = []
167
181
  skip 'Always uses $stdin on windows' if Gem.win_platform?
168
182
 
169
183
  email = 'you@example.com'
170
184
  password = 'secret'
171
185
 
172
186
  if host
173
- ENV['RUBYGEMS_HOST'] = host if style == :ENV
187
+ ENV['RUBYGEMS_HOST'] = host
174
188
  else
175
189
  host = Gem.host
176
190
  end
@@ -182,8 +196,8 @@ class TestGemGemcutterUtilities < Gem::TestCase
182
196
  @sign_in_ui = Gem::MockGemUi.new "#{email}\n#{password}\n"
183
197
 
184
198
  use_ui @sign_in_ui do
185
- if style == :param then
186
- @cmd.sign_in host
199
+ if args.length > 0 then
200
+ @cmd.sign_in(*args)
187
201
  else
188
202
  @cmd.sign_in
189
203
  end
@@ -209,4 +223,3 @@ class TestGemGemcutterUtilities < Gem::TestCase
209
223
  end
210
224
 
211
225
  end
212
-
@@ -168,7 +168,7 @@ class TestGemSpecFetcher < Gem::TestCase
168
168
  specs, _ = @sf.available_specs(:latest)
169
169
 
170
170
  assert_equal [@source], specs.keys
171
- assert_equal @latest_specs, specs[@source].sort
171
+ assert_equal @latest_specs, specs[@source]
172
172
  end
173
173
 
174
174
  def test_available_specs_released
@@ -176,7 +176,7 @@ class TestGemSpecFetcher < Gem::TestCase
176
176
 
177
177
  assert_equal [@source], specs.keys
178
178
 
179
- assert_equal @released, specs[@source].sort
179
+ assert_equal @released, specs[@source]
180
180
  end
181
181
 
182
182
  def test_available_specs_complete
@@ -184,9 +184,9 @@ class TestGemSpecFetcher < Gem::TestCase
184
184
 
185
185
  assert_equal [@source], specs.keys
186
186
 
187
- comp = @prerelease_specs + @released
187
+ expected = (@prerelease_specs + @released).sort
188
188
 
189
- assert_equal comp.sort, specs[@source].sort
189
+ assert_equal expected, specs[@source]
190
190
  end
191
191
 
192
192
  def test_available_specs_complete_handles_no_prerelease
@@ -197,12 +197,9 @@ class TestGemSpecFetcher < Gem::TestCase
197
197
 
198
198
  assert_equal [@source], specs.keys
199
199
 
200
- comp = @released
201
-
202
- assert_equal comp.sort, specs[@source].sort
200
+ assert_equal @released, specs[@source]
203
201
  end
204
202
 
205
-
206
203
  def test_available_specs_cache
207
204
  specs, _ = @sf.available_specs(:latest)
208
205
 
@@ -230,7 +227,7 @@ class TestGemSpecFetcher < Gem::TestCase
230
227
  def test_available_specs_prerelease
231
228
  specs, _ = @sf.available_specs(:prerelease)
232
229
 
233
- assert_equal @prerelease_specs, specs[@source].sort
230
+ assert_equal @prerelease_specs, specs[@source]
234
231
  end
235
232
 
236
233
  def test_available_specs_with_bad_source
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.1.0.rc.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -32,7 +32,7 @@ cert_chain:
32
32
  KDyY1VIazVgoC8XvR4h/95/iScPiuglzA+DBG1hip1xScAtw05BrXyUNrc9CEMYU
33
33
  wgF94UVoHRp6ywo8I7NP3HcwFQDFNEZPNGXsng==
34
34
  -----END CERTIFICATE-----
35
- date: 2013-08-26 00:00:00.000000000 Z
35
+ date: 2013-09-09 00:00:00.000000000 Z
36
36
  dependencies:
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: minitest
@@ -163,6 +163,7 @@ executables:
163
163
  - update_rubygems
164
164
  extensions: []
165
165
  extra_rdoc_files:
166
+ - CVE-2013-4287.txt
166
167
  - History.txt
167
168
  - LICENSE.txt
168
169
  - MIT.txt
@@ -173,6 +174,7 @@ extra_rdoc_files:
173
174
  files:
174
175
  - .autotest
175
176
  - .document
177
+ - CVE-2013-4287.txt
176
178
  - History.txt
177
179
  - LICENSE.txt
178
180
  - MIT.txt
@@ -403,7 +405,12 @@ files:
403
405
  - test/rubygems/test_gem_dependency_installer.rb
404
406
  - test/rubygems/test_gem_dependency_list.rb
405
407
  - test/rubygems/test_gem_dependency_resolver.rb
408
+ - test/rubygems/test_gem_dependency_resolver_api_specification.rb
406
409
  - test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb
410
+ - test/rubygems/test_gem_dependency_resolver_index_set.rb
411
+ - test/rubygems/test_gem_dependency_resolver_index_specification.rb
412
+ - test/rubygems/test_gem_dependency_resolver_installed_specification.rb
413
+ - test/rubygems/test_gem_dependency_resolver_installer_set.rb
407
414
  - test/rubygems/test_gem_doctor.rb
408
415
  - test/rubygems/test_gem_ext_builder.rb
409
416
  - test/rubygems/test_gem_ext_cmake_builder.rb
@@ -485,7 +492,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
485
492
  version: '0'
486
493
  requirements: []
487
494
  rubyforge_project: rubygems-update
488
- rubygems_version: 2.0.7
495
+ rubygems_version: 2.1.0
489
496
  signing_key:
490
497
  specification_version: 4
491
498
  summary: RubyGems is a package management framework for Ruby
@@ -531,7 +538,12 @@ test_files:
531
538
  - test/rubygems/test_gem_dependency_installer.rb
532
539
  - test/rubygems/test_gem_dependency_list.rb
533
540
  - test/rubygems/test_gem_dependency_resolver.rb
541
+ - test/rubygems/test_gem_dependency_resolver_api_specification.rb
534
542
  - test/rubygems/test_gem_dependency_resolver_dependency_conflict.rb
543
+ - test/rubygems/test_gem_dependency_resolver_index_set.rb
544
+ - test/rubygems/test_gem_dependency_resolver_index_specification.rb
545
+ - test/rubygems/test_gem_dependency_resolver_installed_specification.rb
546
+ - test/rubygems/test_gem_dependency_resolver_installer_set.rb
535
547
  - test/rubygems/test_gem_doctor.rb
536
548
  - test/rubygems/test_gem_ext_builder.rb
537
549
  - test/rubygems/test_gem_ext_cmake_builder.rb
metadata.gz.sig CHANGED
Binary file