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,543 @@
|
|
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 TestGemRequestSetLockfileParser < Gem::TestCase
|
8
|
+
def setup
|
9
|
+
super
|
10
|
+
@gem_deps_file = 'gem.deps.rb'
|
11
|
+
@lock_file = File.expand_path "#{@gem_deps_file}.lock"
|
12
|
+
@set = Gem::RequestSet.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_get
|
16
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "\n"
|
17
|
+
parser = tokenizer.make_parser nil, nil
|
18
|
+
|
19
|
+
assert_equal :newline, parser.get.first
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_get_type_mismatch
|
23
|
+
filename = File.expand_path("#{@gem_deps_file}.lock")
|
24
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "foo", filename, 1, 0
|
25
|
+
parser = tokenizer.make_parser nil, nil
|
26
|
+
|
27
|
+
e = assert_raises Gem::RequestSet::Lockfile::ParseError do
|
28
|
+
parser.get :section
|
29
|
+
end
|
30
|
+
|
31
|
+
expected =
|
32
|
+
'unexpected token [:text, "foo"], expected :section (at line 1 column 0)'
|
33
|
+
|
34
|
+
assert_equal expected, e.message
|
35
|
+
|
36
|
+
assert_equal 1, e.line
|
37
|
+
assert_equal 0, e.column
|
38
|
+
assert_equal filename, e.path
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_get_type_multiple
|
42
|
+
filename = File.expand_path("#{@gem_deps_file}.lock")
|
43
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "x", filename, 1
|
44
|
+
parser = tokenizer.make_parser nil, nil
|
45
|
+
|
46
|
+
assert parser.get [:text, :section]
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_get_type_value_mismatch
|
50
|
+
filename = File.expand_path("#{@gem_deps_file}.lock")
|
51
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "x", filename, 1
|
52
|
+
parser = tokenizer.make_parser nil, nil
|
53
|
+
|
54
|
+
e = assert_raises Gem::RequestSet::Lockfile::ParseError do
|
55
|
+
parser.get :text, 'y'
|
56
|
+
end
|
57
|
+
|
58
|
+
expected =
|
59
|
+
'unexpected token [:text, "x"], expected [:text, "y"] (at line 1 column 0)'
|
60
|
+
|
61
|
+
assert_equal expected, e.message
|
62
|
+
|
63
|
+
assert_equal 1, e.line
|
64
|
+
assert_equal 0, e.column
|
65
|
+
assert_equal File.expand_path("#{@gem_deps_file}.lock"), e.path
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
def test_parse
|
70
|
+
write_lockfile <<-LOCKFILE.strip
|
71
|
+
GEM
|
72
|
+
remote: #{@gem_repo}
|
73
|
+
specs:
|
74
|
+
a (2)
|
75
|
+
|
76
|
+
PLATFORMS
|
77
|
+
#{Gem::Platform::RUBY}
|
78
|
+
|
79
|
+
DEPENDENCIES
|
80
|
+
a
|
81
|
+
LOCKFILE
|
82
|
+
|
83
|
+
platforms = []
|
84
|
+
parse_lockfile @set, platforms
|
85
|
+
|
86
|
+
assert_equal [dep('a')], @set.dependencies
|
87
|
+
|
88
|
+
assert_equal [Gem::Platform::RUBY], platforms
|
89
|
+
|
90
|
+
lockfile_set = @set.sets.find do |set|
|
91
|
+
Gem::Resolver::LockSet === set
|
92
|
+
end
|
93
|
+
|
94
|
+
assert lockfile_set, 'could not find a LockSet'
|
95
|
+
|
96
|
+
assert_equal %w[a-2], lockfile_set.specs.map { |tuple| tuple.full_name }
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_parse_dependencies
|
100
|
+
write_lockfile <<-LOCKFILE
|
101
|
+
GEM
|
102
|
+
remote: #{@gem_repo}
|
103
|
+
specs:
|
104
|
+
a (2)
|
105
|
+
|
106
|
+
PLATFORMS
|
107
|
+
#{Gem::Platform::RUBY}
|
108
|
+
|
109
|
+
DEPENDENCIES
|
110
|
+
a (>= 1, <= 2)
|
111
|
+
LOCKFILE
|
112
|
+
|
113
|
+
platforms = []
|
114
|
+
parse_lockfile @set, platforms
|
115
|
+
|
116
|
+
assert_equal [dep('a', '>= 1', '<= 2')], @set.dependencies
|
117
|
+
|
118
|
+
assert_equal [Gem::Platform::RUBY], platforms
|
119
|
+
|
120
|
+
lockfile_set = @set.sets.find do |set|
|
121
|
+
Gem::Resolver::LockSet === set
|
122
|
+
end
|
123
|
+
|
124
|
+
assert lockfile_set, 'could not find a LockSet'
|
125
|
+
|
126
|
+
assert_equal %w[a-2], lockfile_set.specs.map { |tuple| tuple.full_name }
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_parse_DEPENDENCIES_git
|
130
|
+
write_lockfile <<-LOCKFILE
|
131
|
+
GIT
|
132
|
+
remote: git://git.example/josevalim/rails-footnotes.git
|
133
|
+
revision: 3a6ac1971e91d822f057650cc5916ebfcbd6ee37
|
134
|
+
specs:
|
135
|
+
rails-footnotes (3.7.9)
|
136
|
+
rails (>= 3.0.0)
|
137
|
+
|
138
|
+
GIT
|
139
|
+
remote: git://git.example/svenfuchs/i18n-active_record.git
|
140
|
+
revision: 55507cf59f8f2173d38e07e18df0e90d25b1f0f6
|
141
|
+
specs:
|
142
|
+
i18n-active_record (0.0.2)
|
143
|
+
i18n (>= 0.5.0)
|
144
|
+
|
145
|
+
GEM
|
146
|
+
remote: http://gems.example/
|
147
|
+
specs:
|
148
|
+
i18n (0.6.9)
|
149
|
+
rails (4.0.0)
|
150
|
+
|
151
|
+
PLATFORMS
|
152
|
+
ruby
|
153
|
+
|
154
|
+
DEPENDENCIES
|
155
|
+
i18n-active_record!
|
156
|
+
rails-footnotes!
|
157
|
+
LOCKFILE
|
158
|
+
|
159
|
+
parse_lockfile @set, []
|
160
|
+
|
161
|
+
expected = [
|
162
|
+
dep('i18n-active_record', '= 0.0.2'),
|
163
|
+
dep('rails-footnotes', '= 3.7.9'),
|
164
|
+
]
|
165
|
+
|
166
|
+
assert_equal expected, @set.dependencies
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_parse_DEPENDENCIES_git_version
|
170
|
+
write_lockfile <<-LOCKFILE
|
171
|
+
GIT
|
172
|
+
remote: git://github.com/progrium/ruby-jwt.git
|
173
|
+
revision: 8d74770c6cd92ea234b428b5d0c1f18306a4f41c
|
174
|
+
specs:
|
175
|
+
jwt (1.1)
|
176
|
+
|
177
|
+
GEM
|
178
|
+
remote: http://gems.example/
|
179
|
+
specs:
|
180
|
+
|
181
|
+
PLATFORMS
|
182
|
+
ruby
|
183
|
+
|
184
|
+
DEPENDENCIES
|
185
|
+
jwt (= 1.1)!
|
186
|
+
LOCKFILE
|
187
|
+
|
188
|
+
parse_lockfile @set, []
|
189
|
+
|
190
|
+
expected = [
|
191
|
+
dep('jwt', '= 1.1'),
|
192
|
+
]
|
193
|
+
|
194
|
+
assert_equal expected, @set.dependencies
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_parse_GEM
|
198
|
+
write_lockfile <<-LOCKFILE
|
199
|
+
GEM
|
200
|
+
specs:
|
201
|
+
a (2)
|
202
|
+
|
203
|
+
PLATFORMS
|
204
|
+
ruby
|
205
|
+
|
206
|
+
DEPENDENCIES
|
207
|
+
a
|
208
|
+
LOCKFILE
|
209
|
+
|
210
|
+
parse_lockfile @set, []
|
211
|
+
|
212
|
+
assert_equal [dep('a', '>= 0')], @set.dependencies
|
213
|
+
|
214
|
+
lockfile_set = @set.sets.find do |set|
|
215
|
+
Gem::Resolver::LockSet === set
|
216
|
+
end
|
217
|
+
|
218
|
+
assert lockfile_set, 'found a LockSet'
|
219
|
+
|
220
|
+
assert_equal %w[a-2], lockfile_set.specs.map { |s| s.full_name }
|
221
|
+
end
|
222
|
+
|
223
|
+
def test_parse_GEM_remote_multiple
|
224
|
+
write_lockfile <<-LOCKFILE
|
225
|
+
GEM
|
226
|
+
remote: https://gems.example/
|
227
|
+
remote: https://other.example/
|
228
|
+
specs:
|
229
|
+
a (2)
|
230
|
+
|
231
|
+
PLATFORMS
|
232
|
+
ruby
|
233
|
+
|
234
|
+
DEPENDENCIES
|
235
|
+
a
|
236
|
+
LOCKFILE
|
237
|
+
|
238
|
+
parse_lockfile @set, []
|
239
|
+
|
240
|
+
assert_equal [dep('a', '>= 0')], @set.dependencies
|
241
|
+
|
242
|
+
lockfile_set = @set.sets.find do |set|
|
243
|
+
Gem::Resolver::LockSet === set
|
244
|
+
end
|
245
|
+
|
246
|
+
assert lockfile_set, 'found a LockSet'
|
247
|
+
|
248
|
+
assert_equal %w[a-2 a-2], lockfile_set.specs.map { |s| s.full_name }
|
249
|
+
|
250
|
+
assert_equal %w[https://gems.example/ https://other.example/],
|
251
|
+
lockfile_set.specs.map { |s| s.source.uri.to_s }
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_parse_GIT
|
255
|
+
@set.instance_variable_set :@install_dir, 'install_dir'
|
256
|
+
|
257
|
+
write_lockfile <<-LOCKFILE
|
258
|
+
GIT
|
259
|
+
remote: git://example/a.git
|
260
|
+
revision: master
|
261
|
+
specs:
|
262
|
+
a (2)
|
263
|
+
b (>= 3)
|
264
|
+
c
|
265
|
+
|
266
|
+
DEPENDENCIES
|
267
|
+
a!
|
268
|
+
LOCKFILE
|
269
|
+
|
270
|
+
parse_lockfile @set, []
|
271
|
+
|
272
|
+
assert_equal [dep('a', '= 2')], @set.dependencies
|
273
|
+
|
274
|
+
lockfile_set = @set.sets.find do |set|
|
275
|
+
Gem::Resolver::LockSet === set
|
276
|
+
end
|
277
|
+
|
278
|
+
refute lockfile_set, 'fount a LockSet'
|
279
|
+
|
280
|
+
git_set = @set.sets.find do |set|
|
281
|
+
Gem::Resolver::GitSet === set
|
282
|
+
end
|
283
|
+
|
284
|
+
assert git_set, 'could not find a GitSet'
|
285
|
+
|
286
|
+
assert_equal %w[a-2], git_set.specs.values.map { |s| s.full_name }
|
287
|
+
|
288
|
+
assert_equal [dep('b', '>= 3'), dep('c')],
|
289
|
+
git_set.specs.values.first.dependencies
|
290
|
+
|
291
|
+
expected = {
|
292
|
+
'a' => %w[git://example/a.git master],
|
293
|
+
}
|
294
|
+
|
295
|
+
assert_equal expected, git_set.repositories
|
296
|
+
assert_equal 'install_dir', git_set.root_dir
|
297
|
+
end
|
298
|
+
|
299
|
+
def test_parse_GIT_branch
|
300
|
+
write_lockfile <<-LOCKFILE
|
301
|
+
GIT
|
302
|
+
remote: git://example/a.git
|
303
|
+
revision: 1234abc
|
304
|
+
branch: 0-9-12-stable
|
305
|
+
specs:
|
306
|
+
a (2)
|
307
|
+
b (>= 3)
|
308
|
+
|
309
|
+
DEPENDENCIES
|
310
|
+
a!
|
311
|
+
LOCKFILE
|
312
|
+
|
313
|
+
parse_lockfile @set, []
|
314
|
+
|
315
|
+
assert_equal [dep('a', '= 2')], @set.dependencies
|
316
|
+
|
317
|
+
lockfile_set = @set.sets.find do |set|
|
318
|
+
Gem::Resolver::LockSet === set
|
319
|
+
end
|
320
|
+
|
321
|
+
refute lockfile_set, 'fount a LockSet'
|
322
|
+
|
323
|
+
git_set = @set.sets.find do |set|
|
324
|
+
Gem::Resolver::GitSet === set
|
325
|
+
end
|
326
|
+
|
327
|
+
assert git_set, 'could not find a GitSet'
|
328
|
+
|
329
|
+
expected = {
|
330
|
+
'a' => %w[git://example/a.git 1234abc],
|
331
|
+
}
|
332
|
+
|
333
|
+
assert_equal expected, git_set.repositories
|
334
|
+
end
|
335
|
+
|
336
|
+
def test_parse_GIT_ref
|
337
|
+
write_lockfile <<-LOCKFILE
|
338
|
+
GIT
|
339
|
+
remote: git://example/a.git
|
340
|
+
revision: 1234abc
|
341
|
+
ref: 1234abc
|
342
|
+
specs:
|
343
|
+
a (2)
|
344
|
+
b (>= 3)
|
345
|
+
|
346
|
+
DEPENDENCIES
|
347
|
+
a!
|
348
|
+
LOCKFILE
|
349
|
+
|
350
|
+
parse_lockfile @set, []
|
351
|
+
|
352
|
+
assert_equal [dep('a', '= 2')], @set.dependencies
|
353
|
+
|
354
|
+
lockfile_set = @set.sets.find do |set|
|
355
|
+
Gem::Resolver::LockSet === set
|
356
|
+
end
|
357
|
+
|
358
|
+
refute lockfile_set, 'fount a LockSet'
|
359
|
+
|
360
|
+
git_set = @set.sets.find do |set|
|
361
|
+
Gem::Resolver::GitSet === set
|
362
|
+
end
|
363
|
+
|
364
|
+
assert git_set, 'could not find a GitSet'
|
365
|
+
|
366
|
+
expected = {
|
367
|
+
'a' => %w[git://example/a.git 1234abc],
|
368
|
+
}
|
369
|
+
|
370
|
+
assert_equal expected, git_set.repositories
|
371
|
+
end
|
372
|
+
|
373
|
+
def test_parse_GIT_tag
|
374
|
+
write_lockfile <<-LOCKFILE
|
375
|
+
GIT
|
376
|
+
remote: git://example/a.git
|
377
|
+
revision: 1234abc
|
378
|
+
tag: v0.9.12
|
379
|
+
specs:
|
380
|
+
a (2)
|
381
|
+
b (>= 3)
|
382
|
+
|
383
|
+
DEPENDENCIES
|
384
|
+
a!
|
385
|
+
LOCKFILE
|
386
|
+
|
387
|
+
parse_lockfile @set, []
|
388
|
+
|
389
|
+
assert_equal [dep('a', '= 2')], @set.dependencies
|
390
|
+
|
391
|
+
lockfile_set = @set.sets.find do |set|
|
392
|
+
Gem::Resolver::LockSet === set
|
393
|
+
end
|
394
|
+
|
395
|
+
refute lockfile_set, 'fount a LockSet'
|
396
|
+
|
397
|
+
git_set = @set.sets.find do |set|
|
398
|
+
Gem::Resolver::GitSet === set
|
399
|
+
end
|
400
|
+
|
401
|
+
assert git_set, 'could not find a GitSet'
|
402
|
+
|
403
|
+
expected = {
|
404
|
+
'a' => %w[git://example/a.git 1234abc],
|
405
|
+
}
|
406
|
+
|
407
|
+
assert_equal expected, git_set.repositories
|
408
|
+
end
|
409
|
+
|
410
|
+
def test_parse_PATH
|
411
|
+
_, _, directory = vendor_gem
|
412
|
+
|
413
|
+
write_lockfile <<-LOCKFILE
|
414
|
+
PATH
|
415
|
+
remote: #{directory}
|
416
|
+
specs:
|
417
|
+
a (1)
|
418
|
+
b (2)
|
419
|
+
|
420
|
+
DEPENDENCIES
|
421
|
+
a!
|
422
|
+
LOCKFILE
|
423
|
+
|
424
|
+
parse_lockfile @set, []
|
425
|
+
|
426
|
+
assert_equal [dep('a', '= 1')], @set.dependencies
|
427
|
+
|
428
|
+
lockfile_set = @set.sets.find do |set|
|
429
|
+
Gem::Resolver::LockSet === set
|
430
|
+
end
|
431
|
+
|
432
|
+
refute lockfile_set, 'found a LockSet'
|
433
|
+
|
434
|
+
vendor_set = @set.sets.find do |set|
|
435
|
+
Gem::Resolver::VendorSet === set
|
436
|
+
end
|
437
|
+
|
438
|
+
assert vendor_set, 'could not find a VendorSet'
|
439
|
+
|
440
|
+
assert_equal %w[a-1], vendor_set.specs.values.map { |s| s.full_name }
|
441
|
+
|
442
|
+
spec = vendor_set.load_spec 'a', nil, nil, nil
|
443
|
+
|
444
|
+
assert_equal [dep('b', '= 2')], spec.dependencies
|
445
|
+
end
|
446
|
+
|
447
|
+
def test_parse_dependency
|
448
|
+
write_lockfile ' 1)'
|
449
|
+
|
450
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file @lock_file
|
451
|
+
parser = tokenizer.make_parser nil, nil
|
452
|
+
|
453
|
+
parsed = parser.parse_dependency 'a', '='
|
454
|
+
|
455
|
+
assert_equal dep('a', '= 1'), parsed
|
456
|
+
|
457
|
+
write_lockfile ')'
|
458
|
+
|
459
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file @lock_file
|
460
|
+
parser = tokenizer.make_parser nil, nil
|
461
|
+
|
462
|
+
parsed = parser.parse_dependency 'a', '2'
|
463
|
+
|
464
|
+
assert_equal dep('a', '= 2'), parsed
|
465
|
+
end
|
466
|
+
|
467
|
+
def test_parse_gem_specs_dependency
|
468
|
+
write_lockfile <<-LOCKFILE
|
469
|
+
GEM
|
470
|
+
remote: #{@gem_repo}
|
471
|
+
specs:
|
472
|
+
a (2)
|
473
|
+
b (= 3)
|
474
|
+
c (~> 4)
|
475
|
+
d
|
476
|
+
e (~> 5.0, >= 5.0.1)
|
477
|
+
b (3-x86_64-linux)
|
478
|
+
|
479
|
+
PLATFORMS
|
480
|
+
#{Gem::Platform::RUBY}
|
481
|
+
|
482
|
+
DEPENDENCIES
|
483
|
+
a
|
484
|
+
LOCKFILE
|
485
|
+
|
486
|
+
platforms = []
|
487
|
+
parse_lockfile @set, platforms
|
488
|
+
|
489
|
+
assert_equal [dep('a')], @set.dependencies
|
490
|
+
|
491
|
+
assert_equal [Gem::Platform::RUBY], platforms
|
492
|
+
|
493
|
+
lockfile_set = @set.sets.find do |set|
|
494
|
+
Gem::Resolver::LockSet === set
|
495
|
+
end
|
496
|
+
|
497
|
+
assert lockfile_set, 'could not find a LockSet'
|
498
|
+
|
499
|
+
assert_equal %w[a-2 b-3], lockfile_set.specs.map { |tuple| tuple.full_name }
|
500
|
+
|
501
|
+
expected = [
|
502
|
+
Gem::Platform::RUBY,
|
503
|
+
Gem::Platform.new('x86_64-linux'),
|
504
|
+
]
|
505
|
+
|
506
|
+
assert_equal expected, lockfile_set.specs.map { |tuple| tuple.platform }
|
507
|
+
|
508
|
+
spec = lockfile_set.specs.first
|
509
|
+
|
510
|
+
expected = [
|
511
|
+
dep('b', '= 3'),
|
512
|
+
dep('c', '~> 4'),
|
513
|
+
dep('d'),
|
514
|
+
dep('e', '~> 5.0', '>= 5.0.1'),
|
515
|
+
]
|
516
|
+
|
517
|
+
assert_equal expected, spec.dependencies
|
518
|
+
end
|
519
|
+
|
520
|
+
def test_parse_missing
|
521
|
+
assert_raises(Errno::ENOENT) do
|
522
|
+
parse_lockfile @set, []
|
523
|
+
end
|
524
|
+
|
525
|
+
lockfile_set = @set.sets.find do |set|
|
526
|
+
Gem::Resolver::LockSet === set
|
527
|
+
end
|
528
|
+
|
529
|
+
refute lockfile_set
|
530
|
+
end
|
531
|
+
|
532
|
+
def write_lockfile lockfile
|
533
|
+
open @lock_file, 'w' do |io|
|
534
|
+
io.write lockfile
|
535
|
+
end
|
536
|
+
end
|
537
|
+
|
538
|
+
def parse_lockfile set, platforms
|
539
|
+
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file @lock_file
|
540
|
+
parser = tokenizer.make_parser set, platforms
|
541
|
+
parser.parse
|
542
|
+
end
|
543
|
+
end
|