rubygems-update 2.4.5 → 2.4.6
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 +4 -4
- data/History.txt +27 -0
- data/Manifest.txt +4 -0
- data/lib/rubygems.rb +2 -2
- data/lib/rubygems/basic_specification.rb +2 -3
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/open_command.rb +3 -1
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/compatibility.rb +1 -2
- data/lib/rubygems/dependency_installer.rb +11 -1
- data/lib/rubygems/installer.rb +1 -1
- data/lib/rubygems/package.rb +2 -1
- data/lib/rubygems/package/tar_writer.rb +4 -4
- data/lib/rubygems/path_support.rb +0 -7
- data/lib/rubygems/psych_additions.rb +1 -1
- data/lib/rubygems/remote_fetcher.rb +1 -1
- data/lib/rubygems/request_set.rb +10 -4
- data/lib/rubygems/request_set/gem_dependency_api.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +52 -464
- data/lib/rubygems/request_set/lockfile/parser.rb +334 -0
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +108 -0
- data/lib/rubygems/requirement.rb +12 -1
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/specification.rb +12 -12
- data/lib/rubygems/test_case.rb +18 -1
- data/lib/rubygems/user_interaction.rb +0 -8
- data/test/rubygems/test_gem.rb +2 -5
- data/test/rubygems/test_gem_commands_open_command.rb +9 -3
- data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
- data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
- data/test/rubygems/test_gem_dependency_installer.rb +27 -1
- data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
- data/test/rubygems/test_gem_installer.rb +1 -1
- data/test/rubygems/test_gem_package.rb +1 -1
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +30 -11
- data/test/rubygems/test_gem_request_set_lockfile.rb +19 -824
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +543 -0
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +305 -0
- data/test/rubygems/test_gem_requirement.rb +10 -0
- data/test/rubygems/test_gem_specification.rb +7 -1
- data/test/rubygems/test_gem_stub_specification.rb +1 -1
- data/test/rubygems/test_gem_uninstaller.rb +2 -2
- metadata +8 -2
@@ -0,0 +1,305 @@
|
|
1
|
+
require 'rubygems/test_case'
|
2
|
+
require 'rubygems/request_set'
|
3
|
+
require 'rubygems/request_set/lockfile'
|
4
|
+
require 'rubygems/request_set/lockfile/tokenizer'
|
5
|
+
require 'rubygems/request_set/lockfile/parser'
|
6
|
+
|
7
|
+
class TestGemRequestSetLockfileTokenizer < Gem::TestCase
|
8
|
+
def setup
|
9
|
+
super
|
10
|
+
|
11
|
+
@gem_deps_file = 'gem.deps.rb'
|
12
|
+
@lock_file = File.expand_path "#{@gem_deps_file}.lock"
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_peek
|
16
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "\n"
|
17
|
+
|
18
|
+
assert_equal :newline, tokenizer.peek.first
|
19
|
+
|
20
|
+
assert_equal :newline, tokenizer.next_token.first
|
21
|
+
|
22
|
+
assert_equal [:EOF], tokenizer.peek
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_skip
|
26
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "\n"
|
27
|
+
|
28
|
+
refute_predicate tokenizer, :empty?
|
29
|
+
|
30
|
+
tokenizer.skip :newline
|
31
|
+
|
32
|
+
assert_empty tokenizer
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_token_pos
|
36
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new ''
|
37
|
+
assert_equal [5, 0], tokenizer.token_pos(5)
|
38
|
+
|
39
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new '', nil, 1, 2
|
40
|
+
assert_equal [3, 1], tokenizer.token_pos(5)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_tokenize
|
44
|
+
write_lockfile <<-LOCKFILE
|
45
|
+
GEM
|
46
|
+
remote: #{@gem_repo}
|
47
|
+
specs:
|
48
|
+
a (2)
|
49
|
+
b (= 2)
|
50
|
+
c (!= 3)
|
51
|
+
d (> 4)
|
52
|
+
e (< 5)
|
53
|
+
f (>= 6)
|
54
|
+
g (<= 7)
|
55
|
+
h (~> 8)
|
56
|
+
|
57
|
+
PLATFORMS
|
58
|
+
#{Gem::Platform::RUBY}
|
59
|
+
|
60
|
+
DEPENDENCIES
|
61
|
+
a
|
62
|
+
LOCKFILE
|
63
|
+
|
64
|
+
expected = [
|
65
|
+
[:section, 'GEM', 0, 0],
|
66
|
+
[:newline, nil, 3, 0],
|
67
|
+
|
68
|
+
[:entry, 'remote', 2, 1],
|
69
|
+
[:text, @gem_repo, 10, 1],
|
70
|
+
[:newline, nil, 34, 1],
|
71
|
+
|
72
|
+
[:entry, 'specs', 2, 2],
|
73
|
+
[:newline, nil, 8, 2],
|
74
|
+
|
75
|
+
[:text, 'a', 4, 3],
|
76
|
+
[:l_paren, nil, 6, 3],
|
77
|
+
[:text, '2', 7, 3],
|
78
|
+
[:r_paren, nil, 8, 3],
|
79
|
+
[:newline, nil, 9, 3],
|
80
|
+
|
81
|
+
[:text, 'b', 6, 4],
|
82
|
+
[:l_paren, nil, 8, 4],
|
83
|
+
[:requirement, '=', 9, 4],
|
84
|
+
[:text, '2', 11, 4],
|
85
|
+
[:r_paren, nil, 12, 4],
|
86
|
+
[:newline, nil, 13, 4],
|
87
|
+
|
88
|
+
[:text, 'c', 6, 5],
|
89
|
+
[:l_paren, nil, 8, 5],
|
90
|
+
[:requirement, '!=', 9, 5],
|
91
|
+
[:text, '3', 12, 5],
|
92
|
+
[:r_paren, nil, 13, 5],
|
93
|
+
[:newline, nil, 14, 5],
|
94
|
+
|
95
|
+
[:text, 'd', 6, 6],
|
96
|
+
[:l_paren, nil, 8, 6],
|
97
|
+
[:requirement, '>', 9, 6],
|
98
|
+
[:text, '4', 11, 6],
|
99
|
+
[:r_paren, nil, 12, 6],
|
100
|
+
[:newline, nil, 13, 6],
|
101
|
+
|
102
|
+
[:text, 'e', 6, 7],
|
103
|
+
[:l_paren, nil, 8, 7],
|
104
|
+
[:requirement, '<', 9, 7],
|
105
|
+
[:text, '5', 11, 7],
|
106
|
+
[:r_paren, nil, 12, 7],
|
107
|
+
[:newline, nil, 13, 7],
|
108
|
+
|
109
|
+
[:text, 'f', 6, 8],
|
110
|
+
[:l_paren, nil, 8, 8],
|
111
|
+
[:requirement, '>=', 9, 8],
|
112
|
+
[:text, '6', 12, 8],
|
113
|
+
[:r_paren, nil, 13, 8],
|
114
|
+
[:newline, nil, 14, 8],
|
115
|
+
|
116
|
+
[:text, 'g', 6, 9],
|
117
|
+
[:l_paren, nil, 8, 9],
|
118
|
+
[:requirement, '<=', 9, 9],
|
119
|
+
[:text, '7', 12, 9],
|
120
|
+
[:r_paren, nil, 13, 9],
|
121
|
+
[:newline, nil, 14, 9],
|
122
|
+
|
123
|
+
[:text, 'h', 6, 10],
|
124
|
+
[:l_paren, nil, 8, 10],
|
125
|
+
[:requirement, '~>', 9, 10],
|
126
|
+
[:text, '8', 12, 10],
|
127
|
+
[:r_paren, nil, 13, 10],
|
128
|
+
[:newline, nil, 14, 10],
|
129
|
+
|
130
|
+
[:newline, nil, 0, 11],
|
131
|
+
|
132
|
+
[:section, 'PLATFORMS', 0, 12],
|
133
|
+
[:newline, nil, 9, 12],
|
134
|
+
|
135
|
+
[:text, Gem::Platform::RUBY, 2, 13],
|
136
|
+
[:newline, nil, 6, 13],
|
137
|
+
|
138
|
+
[:newline, nil, 0, 14],
|
139
|
+
|
140
|
+
[:section, 'DEPENDENCIES', 0, 15],
|
141
|
+
[:newline, nil, 12, 15],
|
142
|
+
|
143
|
+
[:text, 'a', 2, 16],
|
144
|
+
[:newline, nil, 3, 16],
|
145
|
+
]
|
146
|
+
|
147
|
+
assert_equal expected, tokenize_lockfile
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_tokenize_capitals
|
151
|
+
write_lockfile <<-LOCKFILE
|
152
|
+
GEM
|
153
|
+
remote: #{@gem_repo}
|
154
|
+
specs:
|
155
|
+
Ab (2)
|
156
|
+
|
157
|
+
PLATFORMS
|
158
|
+
#{Gem::Platform::RUBY}
|
159
|
+
|
160
|
+
DEPENDENCIES
|
161
|
+
Ab
|
162
|
+
LOCKFILE
|
163
|
+
|
164
|
+
expected = [
|
165
|
+
[:section, 'GEM', 0, 0],
|
166
|
+
[:newline, nil, 3, 0],
|
167
|
+
[:entry, 'remote', 2, 1],
|
168
|
+
[:text, @gem_repo, 10, 1],
|
169
|
+
[:newline, nil, 34, 1],
|
170
|
+
[:entry, 'specs', 2, 2],
|
171
|
+
[:newline, nil, 8, 2],
|
172
|
+
[:text, 'Ab', 4, 3],
|
173
|
+
[:l_paren, nil, 7, 3],
|
174
|
+
[:text, '2', 8, 3],
|
175
|
+
[:r_paren, nil, 9, 3],
|
176
|
+
[:newline, nil, 10, 3],
|
177
|
+
[:newline, nil, 0, 4],
|
178
|
+
[:section, 'PLATFORMS', 0, 5],
|
179
|
+
[:newline, nil, 9, 5],
|
180
|
+
[:text, Gem::Platform::RUBY, 2, 6],
|
181
|
+
[:newline, nil, 6, 6],
|
182
|
+
[:newline, nil, 0, 7],
|
183
|
+
[:section, 'DEPENDENCIES', 0, 8],
|
184
|
+
[:newline, nil, 12, 8],
|
185
|
+
[:text, 'Ab', 2, 9],
|
186
|
+
[:newline, nil, 4, 9],
|
187
|
+
]
|
188
|
+
|
189
|
+
assert_equal expected, tokenize_lockfile
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_tokenize_conflict_markers
|
193
|
+
write_lockfile '<<<<<<<'
|
194
|
+
|
195
|
+
e = assert_raises Gem::RequestSet::Lockfile::ParseError do
|
196
|
+
tokenize_lockfile
|
197
|
+
end
|
198
|
+
|
199
|
+
assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
|
200
|
+
e.message
|
201
|
+
|
202
|
+
write_lockfile '|||||||'
|
203
|
+
|
204
|
+
e = assert_raises Gem::RequestSet::Lockfile::ParseError do
|
205
|
+
tokenize_lockfile
|
206
|
+
end
|
207
|
+
|
208
|
+
assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
|
209
|
+
e.message
|
210
|
+
|
211
|
+
write_lockfile '======='
|
212
|
+
|
213
|
+
e = assert_raises Gem::RequestSet::Lockfile::ParseError do
|
214
|
+
tokenize_lockfile
|
215
|
+
end
|
216
|
+
|
217
|
+
assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
|
218
|
+
e.message
|
219
|
+
|
220
|
+
write_lockfile '>>>>>>>'
|
221
|
+
|
222
|
+
e = assert_raises Gem::RequestSet::Lockfile::ParseError do
|
223
|
+
tokenize_lockfile
|
224
|
+
end
|
225
|
+
|
226
|
+
assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
|
227
|
+
e.message
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_tokenize_git
|
231
|
+
write_lockfile <<-LOCKFILE
|
232
|
+
DEPENDENCIES
|
233
|
+
a!
|
234
|
+
LOCKFILE
|
235
|
+
|
236
|
+
expected = [
|
237
|
+
[:section, 'DEPENDENCIES', 0, 0],
|
238
|
+
[:newline, nil, 12, 0],
|
239
|
+
|
240
|
+
[:text, 'a', 2, 1],
|
241
|
+
[:bang, nil, 3, 1],
|
242
|
+
[:newline, nil, 4, 1],
|
243
|
+
]
|
244
|
+
|
245
|
+
assert_equal expected, tokenize_lockfile
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_tokenize_multiple
|
249
|
+
write_lockfile <<-LOCKFILE
|
250
|
+
GEM
|
251
|
+
remote: #{@gem_repo}
|
252
|
+
specs:
|
253
|
+
a (2)
|
254
|
+
b (~> 3.0, >= 3.0.1)
|
255
|
+
LOCKFILE
|
256
|
+
|
257
|
+
expected = [
|
258
|
+
[:section, 'GEM', 0, 0],
|
259
|
+
[:newline, nil, 3, 0],
|
260
|
+
|
261
|
+
[:entry, 'remote', 2, 1],
|
262
|
+
[:text, @gem_repo, 10, 1],
|
263
|
+
[:newline, nil, 34, 1],
|
264
|
+
|
265
|
+
[:entry, 'specs', 2, 2],
|
266
|
+
[:newline, nil, 8, 2],
|
267
|
+
|
268
|
+
[:text, 'a', 4, 3],
|
269
|
+
[:l_paren, nil, 6, 3],
|
270
|
+
[:text, '2', 7, 3],
|
271
|
+
[:r_paren, nil, 8, 3],
|
272
|
+
[:newline, nil, 9, 3],
|
273
|
+
|
274
|
+
[:text, 'b', 6, 4],
|
275
|
+
[:l_paren, nil, 8, 4],
|
276
|
+
[:requirement, '~>', 9, 4],
|
277
|
+
[:text, '3.0', 12, 4],
|
278
|
+
[:comma, nil, 15, 4],
|
279
|
+
[:requirement, '>=', 17, 4],
|
280
|
+
[:text, '3.0.1', 20, 4],
|
281
|
+
[:r_paren, nil, 25, 4],
|
282
|
+
[:newline, nil, 26, 4],
|
283
|
+
]
|
284
|
+
|
285
|
+
assert_equal expected, tokenize_lockfile
|
286
|
+
end
|
287
|
+
|
288
|
+
def test_unget
|
289
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "\n"
|
290
|
+
tokenizer.unshift :token
|
291
|
+
parser = tokenizer.make_parser nil, nil
|
292
|
+
|
293
|
+
assert_equal :token, parser.get
|
294
|
+
end
|
295
|
+
|
296
|
+
def write_lockfile lockfile
|
297
|
+
open @lock_file, 'w' do |io|
|
298
|
+
io.write lockfile
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
def tokenize_lockfile
|
303
|
+
Gem::RequestSet::Lockfile::Tokenizer.from_file(@lock_file).to_a
|
304
|
+
end
|
305
|
+
end
|
@@ -347,6 +347,16 @@ class TestGemRequirement < Gem::TestCase
|
|
347
347
|
refute_satisfied_by "1.0.0.1", "= 1.0"
|
348
348
|
end
|
349
349
|
|
350
|
+
def test_hash_with_multiple_versions
|
351
|
+
r1 = req('1.0', '2.0')
|
352
|
+
r2 = req('2.0', '1.0')
|
353
|
+
assert_equal r1.hash, r2.hash
|
354
|
+
|
355
|
+
r1 = req('1.0', '2.0').tap { |r| r.concat(['3.0']) }
|
356
|
+
r2 = req('3.0', '1.0').tap { |r| r.concat(['2.0']) }
|
357
|
+
assert_equal r1.hash, r2.hash
|
358
|
+
end
|
359
|
+
|
350
360
|
# Assert that two requirements are equal. Handles Gem::Requirements,
|
351
361
|
# strings, arrays, numbers, and versions.
|
352
362
|
|
@@ -1080,6 +1080,12 @@ dependencies: []
|
|
1080
1080
|
assert_equal %w[true gem_name], gem.dependencies.map { |dep| dep.name }
|
1081
1081
|
end
|
1082
1082
|
|
1083
|
+
def test_add_dependency_from_existing_dependency
|
1084
|
+
dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new('> 1'), :runtime)
|
1085
|
+
spec = Gem::Specification.new { |s| s.add_dependency dep }
|
1086
|
+
assert_equal dep, spec.dependencies.first
|
1087
|
+
end
|
1088
|
+
|
1083
1089
|
def test_add_dependency_with_type_explicit
|
1084
1090
|
gem = util_spec "awesome", "1.0" do |awesome|
|
1085
1091
|
awesome.add_development_dependency "monkey"
|
@@ -1856,8 +1862,8 @@ dependencies: []
|
|
1856
1862
|
@ext.require_paths = 'lib'
|
1857
1863
|
|
1858
1864
|
expected = [
|
1859
|
-
@ext.extension_dir,
|
1860
1865
|
File.join(@gemhome, 'gems', @ext.original_name, 'lib'),
|
1866
|
+
@ext.extension_dir,
|
1861
1867
|
]
|
1862
1868
|
|
1863
1869
|
assert_equal expected, @ext.full_require_paths
|
@@ -385,7 +385,7 @@ create_makefile '#{@spec.name}'
|
|
385
385
|
assert_match %r!Successfully uninstalled q-1!, lines.last
|
386
386
|
end
|
387
387
|
|
388
|
-
def
|
388
|
+
def test_uninstall_only_lists_unsatisfied_deps
|
389
389
|
quick_gem 'r', '1' do |s| s.add_dependency 'q', '~> 1.0' end
|
390
390
|
quick_gem 'x', '1' do |s| s.add_dependency 'q', '= 1.0' end
|
391
391
|
quick_gem 'q', '1.0'
|
@@ -409,7 +409,7 @@ create_makefile '#{@spec.name}'
|
|
409
409
|
assert_match %r!Successfully uninstalled q-1.0!, lines.last
|
410
410
|
end
|
411
411
|
|
412
|
-
def
|
412
|
+
def test_uninstall_doesnt_prompt_when_other_gem_satisfies_requirement
|
413
413
|
quick_gem 'r', '1' do |s| s.add_dependency 'q', '~> 1.0' end
|
414
414
|
quick_gem 'q', '1.0'
|
415
415
|
quick_gem 'q', '1.1'
|
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.4.
|
4
|
+
version: 2.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Weirich
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-02-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: minitest
|
@@ -262,6 +262,8 @@ files:
|
|
262
262
|
- lib/rubygems/request_set.rb
|
263
263
|
- lib/rubygems/request_set/gem_dependency_api.rb
|
264
264
|
- lib/rubygems/request_set/lockfile.rb
|
265
|
+
- lib/rubygems/request_set/lockfile/parser.rb
|
266
|
+
- lib/rubygems/request_set/lockfile/tokenizer.rb
|
265
267
|
- lib/rubygems/requirement.rb
|
266
268
|
- lib/rubygems/resolver.rb
|
267
269
|
- lib/rubygems/resolver/activation_request.rb
|
@@ -450,6 +452,8 @@ files:
|
|
450
452
|
- test/rubygems/test_gem_request_set.rb
|
451
453
|
- test/rubygems/test_gem_request_set_gem_dependency_api.rb
|
452
454
|
- test/rubygems/test_gem_request_set_lockfile.rb
|
455
|
+
- test/rubygems/test_gem_request_set_lockfile_parser.rb
|
456
|
+
- test/rubygems/test_gem_request_set_lockfile_tokenizer.rb
|
453
457
|
- test/rubygems/test_gem_requirement.rb
|
454
458
|
- test/rubygems/test_gem_resolver.rb
|
455
459
|
- test/rubygems/test_gem_resolver_activation_request.rb
|
@@ -609,6 +613,8 @@ test_files:
|
|
609
613
|
- test/rubygems/test_gem_request_set.rb
|
610
614
|
- test/rubygems/test_gem_request_set_gem_dependency_api.rb
|
611
615
|
- test/rubygems/test_gem_request_set_lockfile.rb
|
616
|
+
- test/rubygems/test_gem_request_set_lockfile_parser.rb
|
617
|
+
- test/rubygems/test_gem_request_set_lockfile_tokenizer.rb
|
612
618
|
- test/rubygems/test_gem_requirement.rb
|
613
619
|
- test/rubygems/test_gem_resolver.rb
|
614
620
|
- test/rubygems/test_gem_resolver_activation_request.rb
|