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.

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