rubygems-update 2.0.12 → 2.0.13

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: 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