rubygems-update 1.8.19 → 1.8.20
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.
- data/History.txt +9 -0
- data/Manifest.txt +2 -0
- data/lib/rubygems.rb +2 -1
- data/lib/rubygems/builder.rb +2 -2
- data/lib/rubygems/commands/build_command.rb +6 -2
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/psych_additions.rb +9 -0
- data/lib/rubygems/spec_fetcher.rb +6 -2
- data/lib/rubygems/specification.rb +5 -0
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_commands_build_command.rb +16 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +25 -0
- data/test/rubygems/test_gem_commands_install_command.rb +32 -0
- data/test/rubygems/test_gem_specification.rb +10 -0
- metadata +7 -5
data/History.txt
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
|
3
|
+
=== 1.8.20 / 2012-03-21
|
4
|
+
|
5
|
+
* 4 bug fixes:
|
6
|
+
|
7
|
+
* Add --force to `gem build` to skip validation. Fixes #297
|
8
|
+
* Gracefully deal with YAML::PrivateType objects in Marshal'd gemspecs
|
9
|
+
* Treat the source as a proper url base. Fixes #304
|
10
|
+
* Warn when updating the specs cache fails. Fixes #300
|
11
|
+
|
3
12
|
=== 1.8.19 / 2012-03-14
|
4
13
|
|
5
14
|
* 3 bug fixes:
|
data/Manifest.txt
CHANGED
@@ -86,6 +86,7 @@ lib/rubygems/package/tar_writer.rb
|
|
86
86
|
lib/rubygems/package_task.rb
|
87
87
|
lib/rubygems/path_support.rb
|
88
88
|
lib/rubygems/platform.rb
|
89
|
+
lib/rubygems/psych_additions.rb
|
89
90
|
lib/rubygems/psych_tree.rb
|
90
91
|
lib/rubygems/remote_fetcher.rb
|
91
92
|
lib/rubygems/require_paths_builder.rb
|
@@ -109,6 +110,7 @@ setup.rb
|
|
109
110
|
test/rubygems/bogussources.rb
|
110
111
|
test/rubygems/data/gem-private_key.pem
|
111
112
|
test/rubygems/data/gem-public_cert.pem
|
113
|
+
test/rubygems/data/null-type.gemspec.rz
|
112
114
|
test/rubygems/fake_certlib/openssl.rb
|
113
115
|
test/rubygems/fix_openssl_warnings.rb
|
114
116
|
test/rubygems/foo/discover.rb
|
data/lib/rubygems.rb
CHANGED
@@ -120,7 +120,7 @@ require "rubygems/deprecate"
|
|
120
120
|
# -The RubyGems Team
|
121
121
|
|
122
122
|
module Gem
|
123
|
-
VERSION = '1.8.
|
123
|
+
VERSION = '1.8.20'
|
124
124
|
|
125
125
|
##
|
126
126
|
# Raised when RubyGems is unable to load or activate a gem. Contains the
|
@@ -671,6 +671,7 @@ module Gem
|
|
671
671
|
YAML::ENGINE.yamler = "psych"
|
672
672
|
end
|
673
673
|
|
674
|
+
require 'rubygems/psych_additions'
|
674
675
|
require 'rubygems/psych_tree'
|
675
676
|
end
|
676
677
|
end
|
data/lib/rubygems/builder.rb
CHANGED
@@ -32,9 +32,9 @@ class Gem::Builder
|
|
32
32
|
# Builds the gem from the specification. Returns the name of the file
|
33
33
|
# written.
|
34
34
|
|
35
|
-
def build
|
35
|
+
def build(skip_validation=false)
|
36
36
|
@spec.mark_version
|
37
|
-
@spec.validate
|
37
|
+
@spec.validate unless skip_validation
|
38
38
|
@signer = sign
|
39
39
|
write_package
|
40
40
|
say success if Gem.configuration.verbose
|
@@ -4,7 +4,11 @@ require 'rubygems/builder'
|
|
4
4
|
class Gem::Commands::BuildCommand < Gem::Command
|
5
5
|
|
6
6
|
def initialize
|
7
|
-
super
|
7
|
+
super 'build', 'Build a gem from a gemspec'
|
8
|
+
|
9
|
+
add_option '--force', 'skip validation of the spec' do |value, options|
|
10
|
+
options[:force] = true
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
def arguments # :nodoc:
|
@@ -22,7 +26,7 @@ class Gem::Commands::BuildCommand < Gem::Command
|
|
22
26
|
spec = load_gemspec gemspec
|
23
27
|
|
24
28
|
if spec then
|
25
|
-
Gem::Builder.new(spec).build
|
29
|
+
Gem::Builder.new(spec).build options[:force]
|
26
30
|
else
|
27
31
|
alert_error "Error loading gemspec. Aborting."
|
28
32
|
terminate_interaction 1
|
@@ -59,11 +59,11 @@ class Gem::Commands::FetchCommand < Gem::Command
|
|
59
59
|
end
|
60
60
|
|
61
61
|
file = "#{spec.full_name}.gem"
|
62
|
-
remote_path = source_uri + "gems/#{file}"
|
62
|
+
remote_path = URI.parse(source_uri) + "gems/#{file}"
|
63
63
|
|
64
64
|
fetch = Gem::RemoteFetcher.fetcher
|
65
65
|
|
66
|
-
gem = fetch.fetch_path remote_path
|
66
|
+
gem = fetch.fetch_path remote_path.to_s
|
67
67
|
|
68
68
|
File.open file, "wb" do |f|
|
69
69
|
f.write gem
|
@@ -255,8 +255,12 @@ class Gem::SpecFetcher
|
|
255
255
|
loaded = false
|
256
256
|
|
257
257
|
if File.exist? local_file then
|
258
|
-
|
259
|
-
|
258
|
+
begin
|
259
|
+
spec_dump =
|
260
|
+
@fetcher.fetch_path(spec_path, File.mtime(local_file))
|
261
|
+
rescue Gem::RemoteFetcher::FetchError => e
|
262
|
+
alert_warning "Error fetching data: #{e.message}"
|
263
|
+
end
|
260
264
|
|
261
265
|
loaded = true if spec_dump
|
262
266
|
|
@@ -666,6 +666,11 @@ class Gem::Specification
|
|
666
666
|
raise TypeError, "invalid Gem::Specification format #{array.inspect}"
|
667
667
|
end
|
668
668
|
|
669
|
+
# Cleanup any YAML::PrivateType. They only show up for an old bug
|
670
|
+
# where nil => null, so just convert them to nil based on the type.
|
671
|
+
|
672
|
+
array.map! { |e| e.kind_of?(YAML::PrivateType) ? nil : e }
|
673
|
+
|
669
674
|
spec.instance_variable_set :@rubygems_version, array[0]
|
670
675
|
# spec version
|
671
676
|
spec.instance_variable_set :@name, array[2]
|
Binary file
|
@@ -98,5 +98,21 @@ class TestGemCommandsBuildCommand < Gem::TestCase
|
|
98
98
|
assert_equal "this is a summary", spec.summary
|
99
99
|
end
|
100
100
|
|
101
|
+
def test_execute_force
|
102
|
+
@gem.instance_variable_set :@required_rubygems_version, nil
|
103
|
+
|
104
|
+
gemspec_file = File.join(@tempdir, @gem.spec_name)
|
105
|
+
|
106
|
+
File.open gemspec_file, 'w' do |gs|
|
107
|
+
gs.write @gem.to_yaml
|
108
|
+
end
|
109
|
+
|
110
|
+
@cmd.options[:args] = [gemspec_file]
|
111
|
+
@cmd.options[:force] = true
|
112
|
+
|
113
|
+
util_test_build_gem @gem, gemspec_file
|
114
|
+
end
|
115
|
+
|
116
|
+
|
101
117
|
end
|
102
118
|
|
@@ -73,5 +73,30 @@ class TestGemCommandsFetchCommand < Gem::TestCase
|
|
73
73
|
"#{@a1.full_name} not fetched"
|
74
74
|
end
|
75
75
|
|
76
|
+
def test_execute_handles_sources_properly
|
77
|
+
repo = "http://gems.example.com"
|
78
|
+
@uri = URI.parse repo
|
79
|
+
|
80
|
+
Gem.sources.replace [repo]
|
81
|
+
|
82
|
+
util_setup_fake_fetcher
|
83
|
+
util_setup_spec_fetcher @a1, @a2
|
84
|
+
|
85
|
+
@fetcher.data["#{@gem_repo}gems/#{@a1.file_name}"] =
|
86
|
+
File.read(@a1.cache_file)
|
87
|
+
|
88
|
+
@cmd.options[:args] = [@a2.name]
|
89
|
+
@cmd.options[:version] = Gem::Requirement.new '1'
|
90
|
+
|
91
|
+
use_ui @ui do
|
92
|
+
Dir.chdir @tempdir do
|
93
|
+
@cmd.execute
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
assert File.exist?(File.join(@tempdir, @a1.file_name)),
|
98
|
+
"#{@a1.full_name} not fetched"
|
99
|
+
end
|
100
|
+
|
76
101
|
end
|
77
102
|
|
@@ -178,6 +178,38 @@ class TestGemCommandsInstallCommand < Gem::TestCase
|
|
178
178
|
assert_match(/ould not find a valid gem 'nonexistent'/, @ui.error)
|
179
179
|
end
|
180
180
|
|
181
|
+
def test_execute_bad_source
|
182
|
+
util_setup_fake_fetcher
|
183
|
+
util_setup_spec_fetcher
|
184
|
+
|
185
|
+
# This is needed because we need to exercise the cache path
|
186
|
+
# within SpecFetcher
|
187
|
+
path = File.join Gem.user_home, '.gem', 'specs', "not-there.nothing%80",
|
188
|
+
"latest_specs.4.8"
|
189
|
+
|
190
|
+
FileUtils.mkdir_p File.dirname(path)
|
191
|
+
|
192
|
+
File.open path, "w" do |f|
|
193
|
+
f.write Marshal.dump([])
|
194
|
+
end
|
195
|
+
|
196
|
+
Gem.sources.replace ["http://not-there.nothing"]
|
197
|
+
|
198
|
+
@cmd.options[:args] = %w[nonexistent]
|
199
|
+
|
200
|
+
use_ui @ui do
|
201
|
+
e = assert_raises Gem::SystemExitException do
|
202
|
+
@cmd.execute
|
203
|
+
end
|
204
|
+
assert_equal 2, e.exit_code
|
205
|
+
end
|
206
|
+
|
207
|
+
errs = @ui.error.split("\n")
|
208
|
+
|
209
|
+
assert_match(/WARNING: Error fetching data/, errs.shift)
|
210
|
+
assert_match(/ould not find a valid gem 'nonexistent'/, errs.shift)
|
211
|
+
end
|
212
|
+
|
181
213
|
def test_execute_nonexistent_with_hint
|
182
214
|
misspelled = "nonexistent_with_hint"
|
183
215
|
correctly_spelled = "non_existent_with_hint"
|
@@ -406,6 +406,16 @@ dependencies: []
|
|
406
406
|
assert_equal expected, Gem::Specification.normalize_yaml_input(input)
|
407
407
|
end
|
408
408
|
|
409
|
+
DATA_PATH = File.expand_path "../data", __FILE__
|
410
|
+
|
411
|
+
def test_handles_private_null_type
|
412
|
+
path = File.join DATA_PATH, "null-type.gemspec.rz"
|
413
|
+
|
414
|
+
data = Marshal.load Gem.inflate(File.read(path))
|
415
|
+
|
416
|
+
assert_equal nil, data.rubyforge_project
|
417
|
+
end
|
418
|
+
|
409
419
|
def test_initialize
|
410
420
|
spec = Gem::Specification.new do |s|
|
411
421
|
s.name = "blah"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubygems-update
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 1.8.
|
9
|
+
- 20
|
10
|
+
version: 1.8.20
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jim Weirich
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-03-
|
20
|
+
date: 2012-03-21 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: minitest
|
@@ -269,6 +269,7 @@ files:
|
|
269
269
|
- lib/rubygems/package_task.rb
|
270
270
|
- lib/rubygems/path_support.rb
|
271
271
|
- lib/rubygems/platform.rb
|
272
|
+
- lib/rubygems/psych_additions.rb
|
272
273
|
- lib/rubygems/psych_tree.rb
|
273
274
|
- lib/rubygems/remote_fetcher.rb
|
274
275
|
- lib/rubygems/require_paths_builder.rb
|
@@ -292,6 +293,7 @@ files:
|
|
292
293
|
- test/rubygems/bogussources.rb
|
293
294
|
- test/rubygems/data/gem-private_key.pem
|
294
295
|
- test/rubygems/data/gem-public_cert.pem
|
296
|
+
- test/rubygems/data/null-type.gemspec.rz
|
295
297
|
- test/rubygems/fake_certlib/openssl.rb
|
296
298
|
- test/rubygems/fix_openssl_warnings.rb
|
297
299
|
- test/rubygems/foo/discover.rb
|
@@ -385,7 +387,7 @@ post_install_message:
|
|
385
387
|
rdoc_options:
|
386
388
|
- --main
|
387
389
|
- README.rdoc
|
388
|
-
- --title=RubyGems 1.8.
|
390
|
+
- --title=RubyGems 1.8.20 Documentation
|
389
391
|
require_paths:
|
390
392
|
- hide_lib_for_update
|
391
393
|
required_ruby_version: !ruby/object:Gem::Requirement
|