rubygems-update 2.4.5 → 2.4.6

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.

Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +27 -0
  3. data/Manifest.txt +4 -0
  4. data/lib/rubygems.rb +2 -2
  5. data/lib/rubygems/basic_specification.rb +2 -3
  6. data/lib/rubygems/commands/help_command.rb +2 -2
  7. data/lib/rubygems/commands/open_command.rb +3 -1
  8. data/lib/rubygems/commands/yank_command.rb +1 -1
  9. data/lib/rubygems/compatibility.rb +1 -2
  10. data/lib/rubygems/dependency_installer.rb +11 -1
  11. data/lib/rubygems/installer.rb +1 -1
  12. data/lib/rubygems/package.rb +2 -1
  13. data/lib/rubygems/package/tar_writer.rb +4 -4
  14. data/lib/rubygems/path_support.rb +0 -7
  15. data/lib/rubygems/psych_additions.rb +1 -1
  16. data/lib/rubygems/remote_fetcher.rb +1 -1
  17. data/lib/rubygems/request_set.rb +10 -4
  18. data/lib/rubygems/request_set/gem_dependency_api.rb +4 -4
  19. data/lib/rubygems/request_set/lockfile.rb +52 -464
  20. data/lib/rubygems/request_set/lockfile/parser.rb +334 -0
  21. data/lib/rubygems/request_set/lockfile/tokenizer.rb +108 -0
  22. data/lib/rubygems/requirement.rb +12 -1
  23. data/lib/rubygems/security/signer.rb +1 -1
  24. data/lib/rubygems/specification.rb +12 -12
  25. data/lib/rubygems/test_case.rb +18 -1
  26. data/lib/rubygems/user_interaction.rb +0 -8
  27. data/test/rubygems/test_gem.rb +2 -5
  28. data/test/rubygems/test_gem_commands_open_command.rb +9 -3
  29. data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
  30. data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
  31. data/test/rubygems/test_gem_dependency_installer.rb +27 -1
  32. data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
  33. data/test/rubygems/test_gem_installer.rb +1 -1
  34. data/test/rubygems/test_gem_package.rb +1 -1
  35. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +30 -11
  36. data/test/rubygems/test_gem_request_set_lockfile.rb +19 -824
  37. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +543 -0
  38. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +305 -0
  39. data/test/rubygems/test_gem_requirement.rb +10 -0
  40. data/test/rubygems/test_gem_specification.rb +7 -1
  41. data/test/rubygems/test_gem_stub_specification.rb +1 -1
  42. data/test/rubygems/test_gem_uninstaller.rb +2 -2
  43. 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
@@ -65,8 +65,8 @@ class TestStubSpecification < Gem::TestCase
65
65
  stub = stub_with_extension
66
66
 
67
67
  expected = [
68
- stub.extension_dir,
69
68
  File.join(stub.full_gem_path, 'lib'),
69
+ stub.extension_dir,
70
70
  ]
71
71
 
72
72
  assert_equal expected, stub.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 test_uninstall_only_lists_unsatified_deps
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 test_uninstall_doesnt_prompt_when_other_gem_satifies_requirement
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.5
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: 2014-12-03 00:00:00.000000000 Z
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