rubygems-update 2.0.12 → 2.0.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 482de6c994fb43534deab69c45cbd1bd65e9d649
4
- data.tar.gz: e0f8614cda95521bdf92b38da1fbc22937f1ac37
3
+ metadata.gz: 672e26d53486f4b660b82364228bbf1e64a741f3
4
+ data.tar.gz: 7031ade701291c825bd52031ee4d8b48672a0ece
5
5
  SHA512:
6
- metadata.gz: a5efa41db38165c7ef31fcae76fb5a1d9f59a411811bbfb898524a862d9cd5258d3815fa867d65160cebe4c32d52d7369b3cb8bfb234116cda83a617f2dcbb92
7
- data.tar.gz: 7e1f7e6a3b36f0410ec961e0352828e783f4e3ded2b16a451306e7224dfad4ff3cf5a84207b8ccc0f0824c550367cd96591697aabe9bafa29a1faf136eb02f23
6
+ metadata.gz: a1e8bc34b7aeec617109c9c46a20f2f467ec7229b9589a25c0dd3025f93d89b0be14f6442fe6639732ca80d01d185cede621d6fcd39a2a398d0b80a4938d472d
7
+ data.tar.gz: 826e04d509384a7006df87f49e9ff912762bddd45f40e461323b630ed9891e8e7003317ccd628a0a548bc0fbad21c336490aa718755b4ef13eef87e14668f437
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.txt CHANGED
@@ -1,5 +1,16 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === 2.0.13 / 2013-10-24
4
+
5
+ Bug fixes:
6
+
7
+ * Use class check instead of :version method check when creating Gem::Version
8
+ objects. Fixes #674 by jkanywhere.
9
+ * Allow installation of gems when the home directory does not exist. Issue
10
+ #689 by Laurence Rowe
11
+ * Fix updating gems which have multiple platforms. Issue #693 by Ookami
12
+ Kenrou.
13
+
3
14
  === 2.0.12 / 2013-10-14
4
15
 
5
16
  Bug fixes:
data/Rakefile CHANGED
@@ -118,14 +118,6 @@ task :package do
118
118
  end
119
119
  end
120
120
 
121
- desc "Upload release to rubyforge"
122
- task :upload_to_rubyforge do
123
- v = hoe.version
124
- sh "rubyforge add_release rubygems rubygems #{v} pkg/rubygems-update-#{v}.gem"
125
- sh "rubyforge add_file rubygems rubygems #{v} pkg/rubygems-#{v}.zip"
126
- sh "rubyforge add_file rubygems rubygems #{v} pkg/rubygems-#{v}.tgz"
127
- end
128
-
129
121
  desc "Upload release to gemcutter S3"
130
122
  task :upload_to_gemcutter do
131
123
  v = hoe.version
@@ -133,7 +125,9 @@ task :upload_to_gemcutter do
133
125
  end
134
126
 
135
127
  desc "Upload release to rubyforge and gemcutter"
136
- task :upload => [:upload_to_rubyforge, :upload_to_gemcutter]
128
+ task :upload => [:upload_to_gemcutter]
129
+
130
+ Rake::Task['publish_docs'].clear
137
131
 
138
132
  # Misc Tasks ---------------------------------------------------------
139
133
 
data/lib/rubygems.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'rbconfig'
9
9
 
10
10
  module Gem
11
- VERSION = '2.0.12'
11
+ VERSION = '2.0.13'
12
12
  end
13
13
 
14
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -445,7 +445,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
445
445
  @spec_dirs = @gem_dirs.map { |gem_dir| File.join gem_dir, 'specifications' }
446
446
  @spec_dirs.reject! { |spec_dir| !File.directory? spec_dir }
447
447
 
448
- Gem::Specification.dirs = @gem_dirs
448
+ reset_gems
449
449
 
450
450
  @have_rdoc_4_plus = nil
451
451
  end
@@ -470,7 +470,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
470
470
  end
471
471
 
472
472
  def latest_specs(req, res)
473
- Gem::Specification.reset
473
+ reset_gems
474
474
 
475
475
  res['content-type'] = 'application/x-gzip'
476
476
 
@@ -531,7 +531,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
531
531
  end
532
532
 
533
533
  def quick(req, res)
534
- Gem::Specification.reset
534
+ reset_gems
535
535
 
536
536
  res['content-type'] = 'text/plain'
537
537
  add_date res
@@ -567,7 +567,8 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
567
567
  end
568
568
 
569
569
  def root(req, res)
570
- Gem::Specification.reset
570
+ reset_gems
571
+
571
572
  add_date res
572
573
 
573
574
  raise WEBrick::HTTPStatus::NotFound, "`#{req.path}' not found." unless
@@ -697,6 +698,13 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
697
698
  res.body = template.result binding
698
699
  end
699
700
 
701
+ ##
702
+ # Updates the server to use the latest installed gems.
703
+
704
+ def reset_gems # :nodoc:
705
+ Gem::Specification.dirs = @gem_dirs
706
+ end
707
+
700
708
  ##
701
709
  # Returns true and prepares http response, if rdoc for the requested gem
702
710
  # name pattern was found.
@@ -787,7 +795,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
787
795
  end
788
796
 
789
797
  def specs(req, res)
790
- Gem::Specification.reset
798
+ reset_gems
791
799
 
792
800
  add_date res
793
801
 
@@ -63,7 +63,12 @@ class Gem::Source
63
63
  end
64
64
 
65
65
  def update_cache?
66
- @update_cache ||= File.stat(Gem.user_home).uid == Process.uid
66
+ @update_cache ||=
67
+ begin
68
+ File.stat(Gem.user_home).uid == Process.uid
69
+ rescue Errno::ENOENT
70
+ false
71
+ end
67
72
  end
68
73
 
69
74
  def fetch_spec(name)
@@ -39,7 +39,12 @@ class Gem::SpecFetcher
39
39
 
40
40
  def initialize
41
41
  @dir = File.join Gem.user_home, '.gem', 'specs'
42
- @update_cache = File.stat(Gem.user_home).uid == Process.uid
42
+ @update_cache =
43
+ begin
44
+ File.stat(Gem.user_home).uid == Process.uid
45
+ rescue Errno::EACCES, Errno::ENOENT
46
+ false
47
+ end
43
48
 
44
49
  @specs = {}
45
50
  @latest_specs = {}
@@ -174,7 +174,7 @@ class Gem::Version
174
174
  # REFACTOR: There's no real reason this should be separate from #initialize.
175
175
 
176
176
  def self.create input
177
- if input.respond_to? :version then
177
+ if self === input then # check yourself before you wreck yourself
178
178
  input
179
179
  elsif input.nil? then
180
180
  nil
@@ -85,6 +85,30 @@ class TestGemServer < Gem::TestCase
85
85
  Marshal.load(@res.body)
86
86
  end
87
87
 
88
+ def test_latest_specs_gemdirs
89
+ data = StringIO.new "GET /latest_specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
90
+ dir = "#{@gemhome}2"
91
+
92
+ spec = quick_spec 'z', 9
93
+
94
+ specs_dir = File.join dir, 'specifications'
95
+ FileUtils.mkdir_p specs_dir
96
+
97
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
98
+ io.write spec.to_ruby
99
+ end
100
+
101
+ server = Gem::Server.new dir, process_based_port, false
102
+
103
+ @req.parse data
104
+
105
+ server.latest_specs @req, @res
106
+
107
+ assert_equal 200, @res.status
108
+
109
+ assert_equal [['z', v(9), Gem::Platform::RUBY]], Marshal.load(@res.body)
110
+ end
111
+
88
112
  def test_latest_specs_gz
89
113
  data = StringIO.new "GET /latest_specs.#{Gem.marshal_version}.gz HTTP/1.0\r\n\r\n"
90
114
  @req.parse data
@@ -120,8 +144,41 @@ class TestGemServer < Gem::TestCase
120
144
  assert_equal 2, @server.server.listeners.length
121
145
  end
122
146
 
147
+ def test_quick_gemdirs
148
+ data = StringIO.new "GET /quick/Marshal.4.8/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
149
+ dir = "#{@gemhome}2"
150
+
151
+ server = Gem::Server.new dir, process_based_port, false
152
+
153
+ @req.parse data
154
+
155
+ server.quick @req, @res
156
+
157
+ assert_equal 404, @res.status
158
+
159
+ spec = quick_spec 'z', 9
160
+
161
+ specs_dir = File.join dir, 'specifications'
162
+
163
+ FileUtils.mkdir_p specs_dir
164
+
165
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
166
+ io.write spec.to_ruby
167
+ end
168
+
169
+ data.rewind
170
+
171
+ req = WEBrick::HTTPRequest.new :Logger => nil
172
+ res = WEBrick::HTTPResponse.new :HTTPVersion => '1.0'
173
+ req.parse data
174
+
175
+ server.quick req, res
176
+
177
+ assert_equal 200, res.status
178
+ end
179
+
123
180
  def test_quick_missing
124
- data = StringIO.new "GET /quick/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
181
+ data = StringIO.new "GET /quick/Marshal.4.8/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
125
182
  @req.parse data
126
183
 
127
184
  @server.quick @req, @res
@@ -188,6 +245,29 @@ class TestGemServer < Gem::TestCase
188
245
  assert_equal 'text/html', @res['content-type']
189
246
  end
190
247
 
248
+ def test_root_gemdirs
249
+ data = StringIO.new "GET / HTTP/1.0\r\n\r\n"
250
+ dir = "#{@gemhome}2"
251
+
252
+ spec = quick_spec 'z', 9
253
+
254
+ specs_dir = File.join dir, 'specifications'
255
+ FileUtils.mkdir_p specs_dir
256
+
257
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
258
+ io.write spec.to_ruby
259
+ end
260
+
261
+ server = Gem::Server.new dir, process_based_port, false
262
+
263
+ @req.parse data
264
+
265
+ server.root @req, @res
266
+
267
+ assert_equal 200, @res.status
268
+ assert_match 'z 9', @res.body
269
+ end
270
+
191
271
  def test_specs
192
272
  data = StringIO.new "GET /specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
193
273
  @req.parse data
@@ -203,6 +283,30 @@ class TestGemServer < Gem::TestCase
203
283
  Marshal.load(@res.body)
204
284
  end
205
285
 
286
+ def test_specs_gemdirs
287
+ data = StringIO.new "GET /specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
288
+ dir = "#{@gemhome}2"
289
+
290
+ spec = quick_spec 'z', 9
291
+
292
+ specs_dir = File.join dir, 'specifications'
293
+ FileUtils.mkdir_p specs_dir
294
+
295
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
296
+ io.write spec.to_ruby
297
+ end
298
+
299
+ server = Gem::Server.new dir, process_based_port, false
300
+
301
+ @req.parse data
302
+
303
+ server.specs @req, @res
304
+
305
+ assert_equal 200, @res.status
306
+
307
+ assert_equal [['z', v(9), Gem::Platform::RUBY]], Marshal.load(@res.body)
308
+ end
309
+
206
310
  def test_specs_gz
207
311
  data = StringIO.new "GET /specs.#{Gem.marshal_version}.gz HTTP/1.0\r\n\r\n"
208
312
  @req.parse data
@@ -184,5 +184,15 @@ class TestGemSource < Gem::TestCase
184
184
  end
185
185
  end
186
186
 
187
+ def test_update_cache_eh
188
+ assert @source.update_cache?
189
+ end
190
+
191
+ def test_update_cache_eh_home_nonexistent
192
+ FileUtils.rmdir Gem.user_home
193
+
194
+ refute @source.update_cache?
195
+ end
196
+
187
197
  end
188
198
 
@@ -52,6 +52,18 @@ class TestGemSpecFetcher < Gem::TestCase
52
52
  ['x', Gem::Version.new(1), 'ruby']]
53
53
  end
54
54
 
55
+ def test_initialize_unwritable_home_dir
56
+ skip 'chmod not supported' if Gem.win_platform?
57
+
58
+ FileUtils.chmod 0000, Gem.user_home
59
+
60
+ begin
61
+ assert Gem::SpecFetcher.new
62
+ ensure
63
+ FileUtils.chmod 0755, Gem.user_home
64
+ end
65
+ end
66
+
55
67
  def test_spec_for_dependency_all
56
68
  d = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}"
57
69
  @fetcher.data["#{d}#{@a1.spec_name}.rz"] = util_zip(Marshal.dump(@a1))
@@ -23,14 +23,13 @@ class TestGemVersion < Gem::TestCase
23
23
  assert_bumped_version_equal "6", "5"
24
24
  end
25
25
 
26
- # FIX: For "legacy reasons," any object that responds to +version+
27
- # is returned unchanged. I'm not certain why.
26
+ # A Gem::Version is already a Gem::Version and therefore not transformed by
27
+ # Gem::Version.create
28
28
 
29
29
  def test_class_create
30
- fake = Object.new
31
- def fake.version; "1.0" end
30
+ real = Gem::Version.new(1.0)
32
31
 
33
- assert_same fake, Gem::Version.create(fake)
32
+ assert_same real, Gem::Version.create(real)
34
33
  assert_nil Gem::Version.create(nil)
35
34
  assert_equal v("5.1"), Gem::Version.create("5.1")
36
35
 
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.0.12
4
+ version: 2.0.13
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-10-14 00:00:00.000000000 Z
35
+ date: 2013-10-25 00:00:00.000000000 Z
36
36
  dependencies:
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: minitest
@@ -457,7 +457,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
457
457
  version: '0'
458
458
  requirements: []
459
459
  rubyforge_project: rubygems-update
460
- rubygems_version: 2.1.7
460
+ rubygems_version: 2.1.9
461
461
  signing_key:
462
462
  specification_version: 4
463
463
  summary: RubyGems is a package management framework for Ruby
metadata.gz.sig CHANGED
Binary file