rubygems-update 0.9.5 → 1.0.0
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.
- data/ChangeLog +135 -0
- data/Rakefile +3 -1
- data/lib/rubygems.rb +27 -38
- data/lib/rubygems/commands/install_command.rb +2 -0
- data/lib/rubygems/commands/mirror_command.rb +8 -2
- data/lib/rubygems/commands/query_command.rb +3 -1
- data/lib/rubygems/commands/server_command.rb +3 -3
- data/lib/rubygems/commands/unpack_command.rb +11 -4
- data/lib/rubygems/commands/update_command.rb +114 -108
- data/lib/rubygems/defaults.rb +46 -0
- data/lib/rubygems/dependency_installer.rb +13 -2
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/install_update_options.rb +7 -0
- data/lib/rubygems/installer.rb +66 -11
- data/lib/rubygems/package.rb +2 -1
- data/lib/rubygems/platform.rb +24 -30
- data/lib/rubygems/remote_fetcher.rb +7 -3
- data/lib/rubygems/require_paths_builder.rb +15 -0
- data/lib/rubygems/rubygems_version.rb +1 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/server.rb +18 -3
- data/lib/rubygems/source_index.rb +20 -23
- data/lib/rubygems/source_info_cache.rb +3 -3
- data/lib/rubygems/specification.rb +64 -31
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/validator.rb +3 -2
- data/lib/rubygems/version.rb +10 -3
- data/setup.rb +30 -6
- data/test/gemutilities.rb +23 -13
- data/test/gemutilities.rbc +0 -0
- data/test/mockgemui.rbc +0 -0
- data/test/test_gem.rb +46 -76
- data/test/test_gem.rbc +0 -0
- data/test/test_gem_commands_build_command.rb +12 -12
- data/test/test_gem_commands_dependency_command.rb +10 -10
- data/test/test_gem_commands_mirror_command.rb +9 -4
- data/test/test_gem_commands_query_command.rb +7 -3
- data/test/test_gem_commands_server_command.rb +27 -0
- data/test/test_gem_commands_unpack_command.rb +20 -2
- data/test/test_gem_format.rb +1 -1
- data/test/test_gem_indexer.rb +5 -5
- data/test/test_gem_install_update_options.rb +1 -1
- data/test/test_gem_installer.rb +149 -60
- data/test/test_gem_platform.rb +19 -0
- data/test/test_gem_remote_fetcher.rb +19 -2
- data/test/test_gem_server.rb +44 -1
- data/test/test_gem_source_index.rb +2 -2
- data/test/test_gem_specification.rb +300 -168
- data/test/test_gem_version.rb +15 -0
- data/test/test_kernel.rb +19 -19
- metadata +46 -42
- data/lib/rubygems/remote_installer.rb +0 -195
- data/test/test_gem_remote_installer.rb +0 -161
data/test/test_gem_platform.rb
CHANGED
@@ -5,6 +5,19 @@ require 'rbconfig'
|
|
5
5
|
|
6
6
|
class TestGemPlatform < RubyGemTestCase
|
7
7
|
|
8
|
+
def test_self_const_missing
|
9
|
+
consts = [:DARWIN, :LINUX_586, :MSWIN32, :PPC_DARWIN, :WIN32, :X86_LINUX]
|
10
|
+
|
11
|
+
consts.each do |const|
|
12
|
+
e = assert_raise NameError do
|
13
|
+
Gem::Platform.const_missing const
|
14
|
+
end
|
15
|
+
|
16
|
+
assert_equal "#{const} has been removed, use CURRENT instead",
|
17
|
+
e.message
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
8
21
|
def test_self_local
|
9
22
|
util_set_arch 'i686-darwin8.10.1'
|
10
23
|
|
@@ -19,6 +32,7 @@ class TestGemPlatform < RubyGemTestCase
|
|
19
32
|
end
|
20
33
|
|
21
34
|
def test_self_new
|
35
|
+
assert_equal Gem::Platform.local, Gem::Platform.new(Gem::Platform::CURRENT)
|
22
36
|
assert_equal Gem::Platform::RUBY, Gem::Platform.new(Gem::Platform::RUBY)
|
23
37
|
assert_equal Gem::Platform::RUBY, Gem::Platform.new(nil)
|
24
38
|
assert_equal Gem::Platform::RUBY, Gem::Platform.new('')
|
@@ -59,10 +73,15 @@ class TestGemPlatform < RubyGemTestCase
|
|
59
73
|
'i386-mingw32' => ['x86', 'mingw32', nil],
|
60
74
|
'i386-mswin32' => ['x86', 'mswin32', nil],
|
61
75
|
'i386-mswin32_80' => ['x86', 'mswin32', '80'],
|
76
|
+
'i386-mswin32-80' => ['x86', 'mswin32', '80'],
|
77
|
+
'x86-mswin32' => ['x86', 'mswin32', nil],
|
78
|
+
'x86-mswin32_60' => ['x86', 'mswin32', '60'],
|
79
|
+
'x86-mswin32-60' => ['x86', 'mswin32', '60'],
|
62
80
|
'i386-netbsdelf' => ['x86', 'netbsdelf', nil],
|
63
81
|
'i386-openbsd4.0' => ['x86', 'openbsd', '4.0'],
|
64
82
|
'i386-solaris2.10' => ['x86', 'solaris', '2.10'],
|
65
83
|
'i386-solaris2.8' => ['x86', 'solaris', '2.8'],
|
84
|
+
'mswin32' => ['x86', 'mswin32', nil],
|
66
85
|
'x86_64-linux' => ['x86_64', 'linux', nil],
|
67
86
|
'x86_64-openbsd3.9' => ['x86_64', 'openbsd', '3.9'],
|
68
87
|
'x86_64-openbsd4.0' => ['x86_64', 'openbsd', '4.0'],
|
@@ -140,11 +140,12 @@ gems:
|
|
140
140
|
raise SocketError
|
141
141
|
end
|
142
142
|
|
143
|
+
uri = 'http://gems.example.com/yaml'
|
143
144
|
e = assert_raise Gem::RemoteFetcher::FetchError do
|
144
|
-
fetcher.fetch_size
|
145
|
+
fetcher.fetch_size uri
|
145
146
|
end
|
146
147
|
|
147
|
-
assert_equal
|
148
|
+
assert_equal "SocketError (SocketError)\n\tgetting size of #{uri}", e.message
|
148
149
|
end
|
149
150
|
|
150
151
|
def test_no_proxy
|
@@ -231,6 +232,22 @@ gems:
|
|
231
232
|
assert_equal 'EOFError: EOFError reading uri', e.message
|
232
233
|
end
|
233
234
|
|
235
|
+
def test_fetch_path_open_uri_http_error
|
236
|
+
fetcher = Gem::RemoteFetcher.new nil
|
237
|
+
|
238
|
+
def fetcher.open_uri_or_path(uri)
|
239
|
+
io = StringIO.new 'went boom'
|
240
|
+
err = OpenURI::HTTPError.new 'error', io
|
241
|
+
raise err
|
242
|
+
end
|
243
|
+
|
244
|
+
e = assert_raise Gem::RemoteFetcher::FetchError do
|
245
|
+
fetcher.fetch_path 'uri'
|
246
|
+
end
|
247
|
+
|
248
|
+
assert_equal "OpenURI::HTTPError: error reading uri\n\twent boom", e.message
|
249
|
+
end
|
250
|
+
|
234
251
|
def test_fetch_path_socket_error
|
235
252
|
fetcher = Gem::RemoteFetcher.new nil
|
236
253
|
|
data/test/test_gem_server.rb
CHANGED
@@ -4,6 +4,7 @@ require 'rubygems/server'
|
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
class Gem::Server
|
7
|
+
attr_accessor :source_index
|
7
8
|
attr_reader :server
|
8
9
|
end
|
9
10
|
|
@@ -25,6 +26,7 @@ class TestGemServer < RubyGemTestCase
|
|
25
26
|
|
26
27
|
@server.quick @req, @res
|
27
28
|
|
29
|
+
assert_equal 200, @res.status, @res.body
|
28
30
|
assert_match %r| \d\d:\d\d:\d\d |, @res['date']
|
29
31
|
assert_equal 'text/plain', @res['content-type']
|
30
32
|
assert_equal "a-1", @res.body
|
@@ -36,6 +38,7 @@ class TestGemServer < RubyGemTestCase
|
|
36
38
|
|
37
39
|
@server.quick @req, @res
|
38
40
|
|
41
|
+
assert_equal 200, @res.status, @res.body
|
39
42
|
assert_match %r| \d\d:\d\d:\d\d |, @res['date']
|
40
43
|
assert_equal 'text/plain', @res['content-type']
|
41
44
|
assert_equal "a-1", Zlib::Inflate.inflate(@res.body)
|
@@ -47,6 +50,7 @@ class TestGemServer < RubyGemTestCase
|
|
47
50
|
|
48
51
|
@server.quick @req, @res
|
49
52
|
|
53
|
+
assert_equal 200, @res.status, @res.body
|
50
54
|
assert @res['date']
|
51
55
|
assert_equal 'text/plain', @res['content-type']
|
52
56
|
yaml = Zlib::Inflate.inflate(@res.body)
|
@@ -55,15 +59,54 @@ class TestGemServer < RubyGemTestCase
|
|
55
59
|
assert_match %r|version: "1"|, yaml
|
56
60
|
end
|
57
61
|
|
62
|
+
def test_quick_a_1_mswin32_gemspec_rz
|
63
|
+
a1_p = quick_gem 'a', '1' do |s| s.platform = Gem::Platform.local end
|
64
|
+
si = Gem::SourceIndex.new @a1.full_name => @a1, a1_p.full_name => a1_p
|
65
|
+
@server.source_index = si
|
66
|
+
|
67
|
+
data = StringIO.new "GET /quick/a-1-#{Gem::Platform.local}.gemspec.rz HTTP/1.0\r\n\r\n"
|
68
|
+
@req.parse data
|
69
|
+
|
70
|
+
@server.quick @req, @res
|
71
|
+
|
72
|
+
assert_equal 200, @res.status, @res.body
|
73
|
+
assert @res['date']
|
74
|
+
assert_equal 'text/plain', @res['content-type']
|
75
|
+
yaml = Zlib::Inflate.inflate(@res.body)
|
76
|
+
assert_match %r|Gem::Specification|, yaml
|
77
|
+
assert_match %r|name: a|, yaml
|
78
|
+
assert_match %r|version: "1"|, yaml
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_quick_common_substrings
|
82
|
+
ab1 = quick_gem 'ab', '1'
|
83
|
+
si = Gem::SourceIndex.new @a1.full_name => @a1, ab1.full_name => ab1
|
84
|
+
@server.source_index = si
|
85
|
+
|
86
|
+
data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n"
|
87
|
+
@req.parse data
|
88
|
+
|
89
|
+
@server.quick @req, @res
|
90
|
+
|
91
|
+
assert_equal 200, @res.status, @res.body
|
92
|
+
assert @res['date']
|
93
|
+
assert_equal 'text/plain', @res['content-type']
|
94
|
+
yaml = Zlib::Inflate.inflate @res.body
|
95
|
+
assert_match %r|Gem::Specification|, yaml
|
96
|
+
assert_match %r|name: a$|, yaml
|
97
|
+
assert_match %r|version: "1"|, yaml
|
98
|
+
end
|
99
|
+
|
58
100
|
def test_quick_z_9_gemspec_rz
|
59
101
|
data = StringIO.new "GET /quick/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
|
60
102
|
@req.parse data
|
61
103
|
|
62
104
|
@server.quick @req, @res
|
63
105
|
|
106
|
+
assert_equal 404, @res.status, @res.body
|
64
107
|
assert_match %r| \d\d:\d\d:\d\d |, @res['date']
|
65
108
|
assert_equal 'text/plain', @res['content-type']
|
66
|
-
assert_equal '', @res.body
|
109
|
+
assert_equal 'No gems found matching "z" "9" nil', @res.body
|
67
110
|
assert_equal 404, @res.status
|
68
111
|
end
|
69
112
|
|
@@ -178,7 +178,7 @@ class TestGemSourceIndex < RubyGemTestCase
|
|
178
178
|
end
|
179
179
|
|
180
180
|
def test_latest_specs
|
181
|
-
spec = quick_gem @gem1.name, '
|
181
|
+
spec = quick_gem @gem1.name, '1'
|
182
182
|
@source_index.add_spec spec
|
183
183
|
|
184
184
|
expected = [
|
@@ -223,7 +223,7 @@ class TestGemSourceIndex < RubyGemTestCase
|
|
223
223
|
|
224
224
|
def test_search
|
225
225
|
assert_equal [@gem1, @gem4], @source_index.search("gem_one")
|
226
|
-
assert_equal [@gem1], @source_index.search("gem_one", "=
|
226
|
+
assert_equal [@gem1], @source_index.search("gem_one", "= 2")
|
227
227
|
|
228
228
|
assert_equal [], @source_index.search("bogusstring")
|
229
229
|
assert_equal [], @source_index.search("gem_one", "= 3.2.1")
|
@@ -47,12 +47,13 @@ end
|
|
47
47
|
def setup
|
48
48
|
super
|
49
49
|
|
50
|
-
@
|
50
|
+
@a1 = quick_gem 'a', '1' do |s|
|
51
51
|
s.executable = 'exec'
|
52
52
|
s.extensions << 'ext/a/extconf.rb'
|
53
53
|
s.has_rdoc = 'true'
|
54
54
|
s.test_file = 'test/suite.rb'
|
55
55
|
s.requirements << 'A working computer'
|
56
|
+
s.rubyforge_project = 'example'
|
56
57
|
|
57
58
|
s.add_dependency 'rake', '> 0.4'
|
58
59
|
s.add_dependency 'jabber4r', '> 0.0.0'
|
@@ -62,9 +63,14 @@ end
|
|
62
63
|
s.files = %w[lib/code.rb]
|
63
64
|
end
|
64
65
|
|
65
|
-
@
|
66
|
+
@a2 = quick_gem 'a', '2' do |s|
|
66
67
|
s.files = %w[lib/code.rb]
|
67
68
|
end
|
69
|
+
|
70
|
+
FileUtils.mkdir_p File.join(@tempdir, 'bin')
|
71
|
+
File.open File.join(@tempdir, 'bin', 'exec'), 'w' do |fp|
|
72
|
+
fp.puts "#!#{Gem.ruby}"
|
73
|
+
end
|
68
74
|
end
|
69
75
|
|
70
76
|
def test_self_attribute_names
|
@@ -107,10 +113,10 @@ end
|
|
107
113
|
end
|
108
114
|
|
109
115
|
def test_self_load
|
110
|
-
spec = File.join @gemhome, 'specifications', "#{@
|
116
|
+
spec = File.join @gemhome, 'specifications', "#{@a2.full_name}.gemspec"
|
111
117
|
gs = Gem::Specification.load spec
|
112
118
|
|
113
|
-
assert_equal @
|
119
|
+
assert_equal @a2, gs
|
114
120
|
end
|
115
121
|
|
116
122
|
def test_self_load_legacy_ruby
|
@@ -119,7 +125,7 @@ end
|
|
119
125
|
assert_equal '0.4.0', s.version.to_s
|
120
126
|
assert_equal true, s.has_rdoc?
|
121
127
|
assert_equal Gem::Specification::TODAY, s.date
|
122
|
-
assert s.required_ruby_version.satisfied_by?(Gem::Version.new('
|
128
|
+
assert s.required_ruby_version.satisfied_by?(Gem::Version.new('1'))
|
123
129
|
assert_equal false, s.has_unit_tests?
|
124
130
|
end
|
125
131
|
|
@@ -129,7 +135,7 @@ end
|
|
129
135
|
assert_equal '0.4.0', s.version.to_s
|
130
136
|
assert_equal true, s.has_rdoc?
|
131
137
|
#assert_equal Date.today, s.date
|
132
|
-
#assert s.required_ruby_version.satisfied_by?(Gem::Version.new('
|
138
|
+
#assert s.required_ruby_version.satisfied_by?(Gem::Version.new('1'))
|
133
139
|
assert_equal false, s.has_unit_tests?
|
134
140
|
end
|
135
141
|
|
@@ -197,10 +203,10 @@ end
|
|
197
203
|
end
|
198
204
|
|
199
205
|
def test__dump
|
200
|
-
@
|
201
|
-
@
|
206
|
+
@a2.platform = Gem::Platform.local
|
207
|
+
@a2.instance_variable_set :@original_platform, 'old_platform'
|
202
208
|
|
203
|
-
data = Marshal.dump @
|
209
|
+
data = Marshal.dump @a2
|
204
210
|
|
205
211
|
same_spec = Marshal.load data
|
206
212
|
|
@@ -208,64 +214,64 @@ end
|
|
208
214
|
end
|
209
215
|
|
210
216
|
def test_author
|
211
|
-
assert_equal 'A User', @
|
217
|
+
assert_equal 'A User', @a1.author
|
212
218
|
end
|
213
219
|
|
214
220
|
def test_authors
|
215
|
-
assert_equal ['A User'], @
|
221
|
+
assert_equal ['A User'], @a1.authors
|
216
222
|
end
|
217
223
|
|
218
224
|
def test_bindir_equals
|
219
|
-
@
|
225
|
+
@a1.bindir = 'apps'
|
220
226
|
|
221
|
-
assert_equal 'apps', @
|
227
|
+
assert_equal 'apps', @a1.bindir
|
222
228
|
end
|
223
229
|
|
224
230
|
def test_bindir_equals_nil
|
225
|
-
@
|
226
|
-
@
|
231
|
+
@a2.bindir = nil
|
232
|
+
@a2.executable = 'app'
|
227
233
|
|
228
|
-
assert_equal nil, @
|
229
|
-
assert_equal %w[lib/code.rb app], @
|
234
|
+
assert_equal nil, @a2.bindir
|
235
|
+
assert_equal %w[lib/code.rb app], @a2.files
|
230
236
|
end
|
231
237
|
|
232
238
|
def test_date
|
233
|
-
assert_equal Gem::Specification::TODAY, @
|
239
|
+
assert_equal Gem::Specification::TODAY, @a1.date
|
234
240
|
end
|
235
241
|
|
236
242
|
def test_date_equals_date
|
237
|
-
@
|
238
|
-
assert_equal Time.local(2003, 9, 17, 0,0,0), @
|
243
|
+
@a1.date = Date.new(2003, 9, 17)
|
244
|
+
assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date
|
239
245
|
end
|
240
246
|
|
241
247
|
def test_date_equals_string
|
242
|
-
@
|
243
|
-
assert_equal Time.local(2003, 9, 17, 0,0,0), @
|
248
|
+
@a1.date = '2003-09-17'
|
249
|
+
assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date
|
244
250
|
end
|
245
251
|
|
246
252
|
def test_date_equals_time
|
247
|
-
@
|
248
|
-
assert_equal Time.local(2003, 9, 17, 0,0,0), @
|
253
|
+
@a1.date = Time.local(2003, 9, 17, 0,0,0)
|
254
|
+
assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date
|
249
255
|
end
|
250
256
|
|
251
257
|
def test_date_equals_time_local
|
252
258
|
# HACK PDT
|
253
|
-
@
|
254
|
-
assert_equal Time.local(2003, 9, 17, 0,0,0), @
|
259
|
+
@a1.date = Time.local(2003, 9, 17, 19,50,0)
|
260
|
+
assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date
|
255
261
|
end
|
256
262
|
|
257
263
|
def test_date_equals_time_utc
|
258
264
|
# HACK PDT
|
259
|
-
@
|
260
|
-
assert_equal Time.local(2003, 9, 17, 0,0,0), @
|
265
|
+
@a1.date = Time.local(2003, 9, 17, 19,50,0)
|
266
|
+
assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date
|
261
267
|
end
|
262
268
|
|
263
269
|
def test_default_executable
|
264
|
-
assert_equal 'exec', @
|
270
|
+
assert_equal 'exec', @a1.default_executable
|
265
271
|
|
266
|
-
@
|
267
|
-
@
|
268
|
-
assert_equal nil, @
|
272
|
+
@a1.default_executable = nil
|
273
|
+
@a1.instance_variable_set :@executables, nil
|
274
|
+
assert_equal nil, @a1.default_executable
|
269
275
|
end
|
270
276
|
|
271
277
|
def test_dependencies
|
@@ -273,11 +279,11 @@ end
|
|
273
279
|
jabber = Gem::Dependency.new 'jabber4r', '> 0.0.0'
|
274
280
|
pqa = Gem::Dependency.new 'pqa', ['> 0.4', '<= 0.6']
|
275
281
|
|
276
|
-
assert_equal [rake, jabber, pqa], @
|
282
|
+
assert_equal [rake, jabber, pqa], @a1.dependencies
|
277
283
|
end
|
278
284
|
|
279
285
|
def test_description
|
280
|
-
assert_equal 'This is a test description', @
|
286
|
+
assert_equal 'This is a test description', @a1.description
|
281
287
|
end
|
282
288
|
|
283
289
|
def test_eql_eh
|
@@ -290,10 +296,10 @@ end
|
|
290
296
|
end
|
291
297
|
|
292
298
|
def test_equals2
|
293
|
-
assert_equal @
|
294
|
-
assert_equal @
|
295
|
-
assert_not_equal @
|
296
|
-
assert_not_equal @
|
299
|
+
assert_equal @a1, @a1
|
300
|
+
assert_equal @a1, @a1.dup
|
301
|
+
assert_not_equal @a1, @a2
|
302
|
+
assert_not_equal @a1, Object.new
|
297
303
|
end
|
298
304
|
|
299
305
|
# The cgikit specification was reported to be causing trouble in at least
|
@@ -322,42 +328,42 @@ end
|
|
322
328
|
end
|
323
329
|
|
324
330
|
def test_equals2_default_executable
|
325
|
-
spec = @
|
331
|
+
spec = @a1.dup
|
326
332
|
spec.default_executable = 'xx'
|
327
333
|
|
328
|
-
assert_not_equal @
|
329
|
-
assert_not_equal spec, @
|
334
|
+
assert_not_equal @a1, spec
|
335
|
+
assert_not_equal spec, @a1
|
330
336
|
end
|
331
337
|
|
332
338
|
def test_equals2_extensions
|
333
|
-
spec = @
|
339
|
+
spec = @a1.dup
|
334
340
|
spec.extensions = 'xx'
|
335
341
|
|
336
|
-
assert_not_equal @
|
337
|
-
assert_not_equal spec, @
|
342
|
+
assert_not_equal @a1, spec
|
343
|
+
assert_not_equal spec, @a1
|
338
344
|
end
|
339
345
|
|
340
346
|
def test_executables
|
341
|
-
@
|
342
|
-
assert_equal %w[app], @
|
347
|
+
@a1.executable = 'app'
|
348
|
+
assert_equal %w[app], @a1.executables
|
343
349
|
end
|
344
350
|
|
345
351
|
def test_executable_equals
|
346
|
-
@
|
347
|
-
assert_equal 'app', @
|
348
|
-
assert_equal %w[lib/code.rb bin/app], @
|
352
|
+
@a2.executable = 'app'
|
353
|
+
assert_equal 'app', @a2.executable
|
354
|
+
assert_equal %w[lib/code.rb bin/app], @a2.files
|
349
355
|
end
|
350
356
|
|
351
357
|
def test_extensions
|
352
|
-
assert_equal ['ext/a/extconf.rb'], @
|
358
|
+
assert_equal ['ext/a/extconf.rb'], @a1.extensions
|
353
359
|
end
|
354
360
|
|
355
361
|
def test_files
|
356
|
-
@
|
357
|
-
@
|
358
|
-
@
|
359
|
-
@
|
360
|
-
@
|
362
|
+
@a1.files = %w(files bin/common)
|
363
|
+
@a1.test_files = %w(test_files bin/common)
|
364
|
+
@a1.executables = %w(executables common)
|
365
|
+
@a1.extra_rdoc_files = %w(extra_rdoc_files bin/common)
|
366
|
+
@a1.extensions = %w(extensions bin/common)
|
361
367
|
|
362
368
|
expected = %w[
|
363
369
|
bin/common
|
@@ -367,113 +373,123 @@ end
|
|
367
373
|
files
|
368
374
|
test_files
|
369
375
|
]
|
370
|
-
assert_equal expected, @
|
376
|
+
assert_equal expected, @a1.files.sort
|
371
377
|
end
|
372
378
|
|
373
379
|
def test_files_duplicate
|
374
|
-
@
|
375
|
-
@
|
376
|
-
@
|
380
|
+
@a2.files = %w[a b c d b]
|
381
|
+
@a2.extra_rdoc_files = %w[x y z x]
|
382
|
+
@a2.normalize
|
377
383
|
|
378
|
-
assert_equal %w[a b c d x y z], @
|
379
|
-
assert_equal %w[x y z], @
|
384
|
+
assert_equal %w[a b c d x y z], @a2.files
|
385
|
+
assert_equal %w[x y z], @a2.extra_rdoc_files
|
380
386
|
end
|
381
387
|
|
382
388
|
def test_files_extra_rdoc_files
|
383
|
-
@
|
384
|
-
@
|
385
|
-
@
|
386
|
-
assert_equal %w[a b c d x y z], @
|
389
|
+
@a2.files = %w[a b c d]
|
390
|
+
@a2.extra_rdoc_files = %w[x y z]
|
391
|
+
@a2.normalize
|
392
|
+
assert_equal %w[a b c d x y z], @a2.files
|
387
393
|
end
|
388
394
|
|
389
395
|
def test_files_non_array
|
390
|
-
@
|
391
|
-
@
|
392
|
-
@
|
393
|
-
@
|
394
|
-
@
|
396
|
+
@a1.files = "F"
|
397
|
+
@a1.test_files = "TF"
|
398
|
+
@a1.executables = "X"
|
399
|
+
@a1.extra_rdoc_files = "ERF"
|
400
|
+
@a1.extensions = "E"
|
395
401
|
|
396
|
-
assert_equal %w[E ERF F TF bin/X], @
|
402
|
+
assert_equal %w[E ERF F TF bin/X], @a1.files.sort
|
397
403
|
end
|
398
404
|
|
399
405
|
def test_files_non_array_pathological
|
400
|
-
@
|
401
|
-
@
|
402
|
-
@
|
403
|
-
@
|
404
|
-
@
|
406
|
+
@a1.instance_variable_set :@files, "F"
|
407
|
+
@a1.instance_variable_set :@test_files, "TF"
|
408
|
+
@a1.instance_variable_set :@extra_rdoc_files, "ERF"
|
409
|
+
@a1.instance_variable_set :@extensions, "E"
|
410
|
+
@a1.instance_variable_set :@executables, "X"
|
411
|
+
|
412
|
+
assert_equal %w[E ERF F TF bin/X], @a1.files.sort
|
413
|
+
assert_kind_of Integer, @a1.hash
|
414
|
+
end
|
405
415
|
|
406
|
-
|
407
|
-
|
416
|
+
def test_full_gem_path
|
417
|
+
assert_equal File.join(@gemhome, 'gems', @a1.full_name),
|
418
|
+
@a1.full_gem_path
|
419
|
+
|
420
|
+
@a1.original_platform = 'mswin32'
|
421
|
+
|
422
|
+
assert_equal File.join(@gemhome, 'gems', @a1.original_name),
|
423
|
+
@a1.full_gem_path
|
408
424
|
end
|
409
425
|
|
410
426
|
def test_full_name
|
411
|
-
assert_equal 'a-
|
427
|
+
assert_equal 'a-1', @a1.full_name
|
412
428
|
|
413
|
-
@
|
414
|
-
assert_equal 'a-
|
429
|
+
@a1.platform = Gem::Platform.new ['universal', 'darwin', nil]
|
430
|
+
assert_equal 'a-1-universal-darwin', @a1.full_name
|
415
431
|
|
416
|
-
@
|
417
|
-
assert_equal 'a-
|
432
|
+
@a1.instance_variable_set :@new_platform, 'mswin32'
|
433
|
+
assert_equal 'a-1-mswin32', @a1.full_name, 'legacy'
|
418
434
|
|
419
435
|
return if win_platform?
|
420
436
|
|
421
|
-
@
|
422
|
-
assert_equal 'a-
|
437
|
+
@a1.platform = 'current'
|
438
|
+
assert_equal 'a-1-x86-darwin-8', @a1.full_name
|
423
439
|
end
|
424
440
|
|
425
441
|
def test_full_name_windows
|
426
442
|
test_cases = {
|
427
|
-
'i386-mswin32' => 'a-
|
428
|
-
'i386-mswin32_80' => 'a-
|
429
|
-
'i386-mingw32' => 'a-
|
443
|
+
'i386-mswin32' => 'a-1-x86-mswin32-60',
|
444
|
+
'i386-mswin32_80' => 'a-1-x86-mswin32-80',
|
445
|
+
'i386-mingw32' => 'a-1-x86-mingw32'
|
430
446
|
}
|
431
447
|
|
432
448
|
test_cases.each do |arch, expected|
|
433
449
|
util_set_arch arch
|
434
|
-
@
|
435
|
-
assert_equal expected, @
|
450
|
+
@a1.platform = 'current'
|
451
|
+
assert_equal expected, @a1.full_name
|
436
452
|
end
|
437
453
|
end
|
438
454
|
|
439
455
|
def test_has_rdoc_eh
|
440
|
-
assert_equal true, @
|
456
|
+
assert_equal true, @a1.has_rdoc?
|
441
457
|
end
|
442
458
|
|
443
459
|
def test_hash
|
444
|
-
assert_equal @
|
445
|
-
assert_equal @
|
446
|
-
assert_not_equal @
|
460
|
+
assert_equal @a1.hash, @a1.hash
|
461
|
+
assert_equal @a1.hash, @a1.dup.hash
|
462
|
+
assert_not_equal @a1.hash, @a2.hash
|
447
463
|
end
|
448
464
|
|
449
465
|
def test_lib_files
|
450
|
-
@
|
466
|
+
@a1.files = %w[lib/foo.rb Rakefile]
|
451
467
|
|
452
|
-
assert_equal %w[lib/foo.rb], @
|
468
|
+
assert_equal %w[lib/foo.rb], @a1.lib_files
|
453
469
|
end
|
454
470
|
|
455
471
|
def test_name
|
456
|
-
assert_equal 'a', @
|
472
|
+
assert_equal 'a', @a1.name
|
457
473
|
end
|
458
474
|
|
459
475
|
def test_original_name
|
460
|
-
assert_equal 'a-
|
476
|
+
assert_equal 'a-1', @a1.full_name
|
461
477
|
|
462
|
-
@
|
463
|
-
@
|
464
|
-
assert_equal 'a-
|
478
|
+
@a1.platform = 'i386-linux'
|
479
|
+
@a1.instance_variable_set :@original_platform, 'i386-linux'
|
480
|
+
assert_equal 'a-1-i386-linux', @a1.original_name
|
465
481
|
end
|
466
482
|
|
467
483
|
def test_platform
|
468
|
-
assert_equal Gem::Platform::RUBY, @
|
484
|
+
assert_equal Gem::Platform::RUBY, @a1.platform
|
469
485
|
end
|
470
486
|
|
471
487
|
def test_platform_equals
|
472
|
-
@
|
473
|
-
assert_equal Gem::Platform::RUBY, @
|
488
|
+
@a1.platform = nil
|
489
|
+
assert_equal Gem::Platform::RUBY, @a1.platform
|
474
490
|
|
475
|
-
@
|
476
|
-
assert_equal Gem::Platform::RUBY, @
|
491
|
+
@a1.platform = Gem::Platform::RUBY
|
492
|
+
assert_equal Gem::Platform::RUBY, @a1.platform
|
477
493
|
|
478
494
|
test_cases = {
|
479
495
|
'i386-mswin32' => ['x86', 'mswin32', '60'],
|
@@ -484,29 +500,35 @@ end
|
|
484
500
|
|
485
501
|
test_cases.each do |arch, expected|
|
486
502
|
util_set_arch arch
|
487
|
-
@
|
488
|
-
assert_equal Gem::Platform.new(expected), @
|
503
|
+
@a1.platform = Gem::Platform::CURRENT
|
504
|
+
assert_equal Gem::Platform.new(expected), @a1.platform
|
489
505
|
end
|
490
506
|
end
|
491
507
|
|
508
|
+
def test_platform_equals_current
|
509
|
+
@a1.platform = Gem::Platform::CURRENT
|
510
|
+
assert_equal Gem::Platform.local, @a1.platform
|
511
|
+
assert_equal Gem::Platform.local.to_s, @a1.original_platform
|
512
|
+
end
|
513
|
+
|
492
514
|
def test_platform_equals_legacy
|
493
|
-
@
|
494
|
-
assert_equal Gem::Platform
|
515
|
+
@a1.platform = 'mswin32'
|
516
|
+
assert_equal Gem::Platform.new('x86-mswin32'), @a1.platform
|
495
517
|
|
496
|
-
@
|
497
|
-
assert_equal Gem::Platform
|
518
|
+
@a1.platform = 'i586-linux'
|
519
|
+
assert_equal Gem::Platform.new('x86-linux'), @a1.platform
|
498
520
|
|
499
|
-
@
|
500
|
-
assert_equal Gem::Platform
|
521
|
+
@a1.platform = 'powerpc-darwin'
|
522
|
+
assert_equal Gem::Platform.new('ppc-darwin'), @a1.platform
|
501
523
|
end
|
502
524
|
|
503
525
|
def test_require_paths
|
504
|
-
@
|
505
|
-
assert_equal %w[lib], @
|
526
|
+
@a1.require_path = 'lib'
|
527
|
+
assert_equal %w[lib], @a1.require_paths
|
506
528
|
end
|
507
529
|
|
508
530
|
def test_requirements
|
509
|
-
assert_equal ['A working computer'], @
|
531
|
+
assert_equal ['A working computer'], @a1.requirements
|
510
532
|
end
|
511
533
|
|
512
534
|
def test_spaceship_name
|
@@ -539,28 +561,22 @@ end
|
|
539
561
|
end
|
540
562
|
|
541
563
|
def test_summary
|
542
|
-
assert_equal 'this is a summary', @
|
564
|
+
assert_equal 'this is a summary', @a1.summary
|
543
565
|
end
|
544
566
|
|
545
567
|
def test_test_files
|
546
|
-
@
|
547
|
-
assert_equal ['test/suite.rb'], @
|
548
|
-
end
|
549
|
-
|
550
|
-
def test_test_suite_file
|
551
|
-
@a0_0_2.test_suite_file = 'test/suite.rb'
|
552
|
-
assert_equal ['test/suite.rb'], @a0_0_2.test_files
|
553
|
-
# XXX: what about the warning?
|
568
|
+
@a1.test_file = 'test/suite.rb'
|
569
|
+
assert_equal ['test/suite.rb'], @a1.test_files
|
554
570
|
end
|
555
571
|
|
556
572
|
def test_to_ruby
|
557
|
-
@
|
573
|
+
@a2.required_rubygems_version = Gem::Requirement.new '> 0'
|
558
574
|
|
559
|
-
ruby_code = @
|
575
|
+
ruby_code = @a2.to_ruby
|
560
576
|
|
561
577
|
expected = "Gem::Specification.new do |s|
|
562
578
|
s.name = %q{a}
|
563
|
-
s.version = \"
|
579
|
+
s.version = \"2\"
|
564
580
|
|
565
581
|
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION} if s.respond_to? :specification_version=
|
566
582
|
|
@@ -582,17 +598,20 @@ end
|
|
582
598
|
|
583
599
|
same_spec = eval ruby_code
|
584
600
|
|
585
|
-
assert_equal @
|
601
|
+
assert_equal @a2, same_spec
|
586
602
|
end
|
587
603
|
|
588
604
|
def test_to_ruby_fancy
|
589
|
-
@
|
590
|
-
ruby_code = @
|
605
|
+
@a1.platform = Gem::Platform.local
|
606
|
+
ruby_code = @a1.to_ruby
|
607
|
+
|
608
|
+
local = Gem::Platform.local
|
609
|
+
expected_platform = "[#{local.cpu.inspect}, #{local.os.inspect}, #{local.version.inspect}]"
|
591
610
|
|
592
611
|
expected = "Gem::Specification.new do |s|
|
593
612
|
s.name = %q{a}
|
594
|
-
s.version = \"
|
595
|
-
s.platform = Gem::Platform.new(
|
613
|
+
s.version = \"1\"
|
614
|
+
s.platform = Gem::Platform.new(#{expected_platform})
|
596
615
|
|
597
616
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
598
617
|
|
@@ -609,6 +628,7 @@ end
|
|
609
628
|
s.homepage = %q{http://example.com}
|
610
629
|
s.require_paths = [\"lib\"]
|
611
630
|
s.requirements = [\"A working computer\"]
|
631
|
+
s.rubyforge_project = %q{example}
|
612
632
|
s.rubygems_version = %q{#{Gem::RubyGemsVersion}}
|
613
633
|
s.summary = %q{this is a summary}
|
614
634
|
s.test_files = [\"test/suite.rb\"]
|
@@ -623,7 +643,7 @@ end
|
|
623
643
|
|
624
644
|
same_spec = eval ruby_code
|
625
645
|
|
626
|
-
assert_equal @
|
646
|
+
assert_equal @a1, same_spec
|
627
647
|
end
|
628
648
|
|
629
649
|
def test_to_ruby_legacy
|
@@ -635,10 +655,10 @@ end
|
|
635
655
|
end
|
636
656
|
|
637
657
|
def test_to_ruby_platform
|
638
|
-
@
|
639
|
-
@
|
658
|
+
@a2.platform = Gem::Platform.local
|
659
|
+
@a2.instance_variable_set :@original_platform, 'old_platform'
|
640
660
|
|
641
|
-
ruby_code = @
|
661
|
+
ruby_code = @a2.to_ruby
|
642
662
|
|
643
663
|
same_spec = eval ruby_code
|
644
664
|
|
@@ -646,28 +666,34 @@ end
|
|
646
666
|
end
|
647
667
|
|
648
668
|
def test_to_yaml
|
649
|
-
yaml_str = @
|
669
|
+
yaml_str = @a1.to_yaml
|
650
670
|
same_spec = YAML.load(yaml_str)
|
651
671
|
|
652
|
-
assert_equal @
|
672
|
+
assert_equal @a1, same_spec
|
653
673
|
end
|
654
674
|
|
655
675
|
def test_to_yaml_fancy
|
656
|
-
@
|
657
|
-
yaml_str = @
|
676
|
+
@a1.platform = Gem::Platform.local
|
677
|
+
yaml_str = @a1.to_yaml
|
658
678
|
|
659
679
|
same_spec = YAML.load(yaml_str)
|
660
680
|
|
661
|
-
assert_equal Gem::Platform
|
681
|
+
assert_equal Gem::Platform.local, same_spec.platform
|
662
682
|
|
663
|
-
assert_equal @
|
683
|
+
assert_equal @a1, same_spec
|
664
684
|
end
|
665
685
|
|
666
|
-
def
|
667
|
-
@
|
668
|
-
@a0_0_1.instance_variable_set :@original_platform, 'powerpc-darwin7.9.0'
|
686
|
+
def test_to_yaml_platform_empty_string
|
687
|
+
@a1.instance_variable_set :@original_platform, ''
|
669
688
|
|
670
|
-
|
689
|
+
assert_match %r|^platform: ruby$|, @a1.to_yaml
|
690
|
+
end
|
691
|
+
|
692
|
+
def test_to_yaml_platform_legacy
|
693
|
+
@a1.platform = 'powerpc-darwin7.9.0'
|
694
|
+
@a1.instance_variable_set :@original_platform, 'powerpc-darwin7.9.0'
|
695
|
+
|
696
|
+
yaml_str = @a1.to_yaml
|
671
697
|
|
672
698
|
same_spec = YAML.load(yaml_str)
|
673
699
|
|
@@ -675,8 +701,61 @@ end
|
|
675
701
|
assert_equal 'powerpc-darwin7.9.0', same_spec.original_platform
|
676
702
|
end
|
677
703
|
|
704
|
+
def test_to_yaml_platform_nil
|
705
|
+
@a1.instance_variable_set :@original_platform, nil
|
706
|
+
|
707
|
+
assert_match %r|^platform: ruby$|, @a1.to_yaml
|
708
|
+
end
|
709
|
+
|
678
710
|
def test_validate
|
679
|
-
|
711
|
+
Dir.chdir @tempdir do
|
712
|
+
assert @a1.validate
|
713
|
+
end
|
714
|
+
end
|
715
|
+
|
716
|
+
def test_validate_authors
|
717
|
+
Dir.chdir @tempdir do
|
718
|
+
@a1.authors = []
|
719
|
+
|
720
|
+
use_ui @ui do
|
721
|
+
@a1.validate
|
722
|
+
end
|
723
|
+
|
724
|
+
assert_equal "WARNING: no author specified\n", @ui.error, 'error'
|
725
|
+
|
726
|
+
@a1.authors = [Object.new]
|
727
|
+
|
728
|
+
e = assert_raise Gem::InvalidSpecificationException do
|
729
|
+
@a1.validate
|
730
|
+
end
|
731
|
+
|
732
|
+
assert_equal 'authors must be Array of Strings', e.message
|
733
|
+
end
|
734
|
+
end
|
735
|
+
|
736
|
+
def test_validate_autorequire
|
737
|
+
Dir.chdir @tempdir do
|
738
|
+
@a1.autorequire = 'code'
|
739
|
+
|
740
|
+
use_ui @ui do
|
741
|
+
@a1.validate
|
742
|
+
end
|
743
|
+
|
744
|
+
assert_equal "WARNING: deprecated autorequire specified\n",
|
745
|
+
@ui.error, 'error'
|
746
|
+
end
|
747
|
+
end
|
748
|
+
|
749
|
+
def test_validate_email
|
750
|
+
Dir.chdir @tempdir do
|
751
|
+
@a1.email = ''
|
752
|
+
|
753
|
+
use_ui @ui do
|
754
|
+
@a1.validate
|
755
|
+
end
|
756
|
+
|
757
|
+
assert_equal "WARNING: no email specified\n", @ui.error, 'error'
|
758
|
+
end
|
680
759
|
end
|
681
760
|
|
682
761
|
def test_validate_empty
|
@@ -687,51 +766,104 @@ end
|
|
687
766
|
assert_equal 'missing value for attribute name', e.message
|
688
767
|
end
|
689
768
|
|
769
|
+
def test_validate_executables
|
770
|
+
FileUtils.mkdir_p File.join(@tempdir, 'bin')
|
771
|
+
File.open File.join(@tempdir, 'bin', 'exec'), 'w' do end
|
772
|
+
|
773
|
+
use_ui @ui do
|
774
|
+
Dir.chdir @tempdir do
|
775
|
+
assert @a1.validate
|
776
|
+
end
|
777
|
+
end
|
778
|
+
|
779
|
+
assert_equal '', @ui.output, 'output'
|
780
|
+
assert_equal "WARNING: bin/exec is missing #! line\n", @ui.error, 'error'
|
781
|
+
end
|
782
|
+
|
690
783
|
def test_validate_empty_require_paths
|
691
|
-
@
|
784
|
+
@a1.require_paths = []
|
692
785
|
e = assert_raise Gem::InvalidSpecificationException do
|
693
|
-
@
|
786
|
+
@a1.validate
|
694
787
|
end
|
695
788
|
|
696
789
|
assert_equal 'specification must have at least one require_path', e.message
|
697
790
|
end
|
698
791
|
|
699
|
-
def
|
700
|
-
|
701
|
-
|
792
|
+
def test_validate_homepage
|
793
|
+
Dir.chdir @tempdir do
|
794
|
+
@a1.homepage = ''
|
702
795
|
|
703
|
-
|
704
|
-
|
705
|
-
|
796
|
+
use_ui @ui do
|
797
|
+
@a1.validate
|
798
|
+
end
|
799
|
+
|
800
|
+
assert_equal "WARNING: no homepage specified\n", @ui.error, 'error'
|
706
801
|
end
|
802
|
+
end
|
707
803
|
|
708
|
-
|
709
|
-
|
804
|
+
def test_validate_has_rdoc
|
805
|
+
Dir.chdir @tempdir do
|
806
|
+
@a1.has_rdoc = false
|
807
|
+
|
808
|
+
use_ui @ui do
|
809
|
+
@a1.validate
|
810
|
+
end
|
811
|
+
|
812
|
+
assert_equal "WARNING: RDoc will not be generated (has_rdoc == false)\n",
|
813
|
+
@ui.error, 'error'
|
814
|
+
end
|
710
815
|
end
|
711
816
|
|
712
817
|
def test_validate_platform_legacy
|
713
|
-
|
714
|
-
|
818
|
+
Dir.chdir @tempdir do
|
819
|
+
@a1.platform = 'mswin32'
|
820
|
+
assert @a1.validate
|
821
|
+
|
822
|
+
@a1.platform = 'i586-linux'
|
823
|
+
assert @a1.validate
|
824
|
+
|
825
|
+
@a1.platform = 'powerpc-darwin'
|
826
|
+
assert @a1.validate
|
827
|
+
end
|
828
|
+
end
|
715
829
|
|
716
|
-
|
717
|
-
|
830
|
+
def test_validate_rubyforge_project
|
831
|
+
Dir.chdir @tempdir do
|
832
|
+
@a1.rubyforge_project = ''
|
718
833
|
|
719
|
-
|
720
|
-
|
834
|
+
use_ui @ui do
|
835
|
+
@a1.validate
|
836
|
+
end
|
837
|
+
|
838
|
+
assert_equal "WARNING: no rubyforge_project specified\n",
|
839
|
+
@ui.error, 'error'
|
840
|
+
end
|
721
841
|
end
|
722
842
|
|
723
843
|
def test_validate_rubygems_version
|
724
|
-
@
|
844
|
+
@a1.rubygems_version = "3"
|
725
845
|
e = assert_raise Gem::InvalidSpecificationException do
|
726
|
-
@
|
846
|
+
@a1.validate
|
727
847
|
end
|
728
848
|
|
729
849
|
assert_equal "expected RubyGems version #{Gem::RubyGemsVersion}, was 3",
|
730
850
|
e.message
|
731
851
|
end
|
732
852
|
|
853
|
+
def test_validate_summary
|
854
|
+
Dir.chdir @tempdir do
|
855
|
+
@a1.summary = ''
|
856
|
+
|
857
|
+
use_ui @ui do
|
858
|
+
@a1.validate
|
859
|
+
end
|
860
|
+
|
861
|
+
assert_equal "WARNING: no summary specified\n", @ui.error, 'error'
|
862
|
+
end
|
863
|
+
end
|
864
|
+
|
733
865
|
def test_version
|
734
|
-
assert_equal Gem::Version.new('
|
866
|
+
assert_equal Gem::Version.new('1'), @a1.version
|
735
867
|
end
|
736
868
|
|
737
869
|
end
|