rubygems-update 2.4.4 → 2.4.5

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.rdoc +58 -0
  3. data/History.txt +42 -0
  4. data/Manifest.txt +1 -1
  5. data/lib/rubygems.rb +8 -2
  6. data/lib/rubygems/basic_specification.rb +52 -22
  7. data/lib/rubygems/commands/contents_command.rb +0 -1
  8. data/lib/rubygems/commands/pristine_command.rb +15 -1
  9. data/lib/rubygems/commands/uninstall_command.rb +1 -1
  10. data/lib/rubygems/commands/update_command.rb +0 -2
  11. data/lib/rubygems/core_ext/kernel_gem.rb +8 -1
  12. data/lib/rubygems/core_ext/kernel_require.rb +1 -1
  13. data/lib/rubygems/dependency.rb +1 -1
  14. data/lib/rubygems/dependency_list.rb +1 -5
  15. data/lib/rubygems/ext/ext_conf_builder.rb +1 -1
  16. data/lib/rubygems/indexer.rb +1 -1
  17. data/lib/rubygems/installer.rb +2 -2
  18. data/lib/rubygems/package/old.rb +2 -2
  19. data/lib/rubygems/package/tar_writer.rb +9 -3
  20. data/lib/rubygems/remote_fetcher.rb +5 -1
  21. data/lib/rubygems/request/connection_pools.rb +5 -1
  22. data/lib/rubygems/request/http_pool.rb +9 -0
  23. data/lib/rubygems/request_set.rb +1 -4
  24. data/lib/rubygems/request_set/lockfile.rb +21 -8
  25. data/lib/rubygems/resolver/api_set.rb +1 -1
  26. data/lib/rubygems/resolver/api_specification.rb +1 -1
  27. data/lib/rubygems/resolver/installer_set.rb +1 -1
  28. data/lib/rubygems/source.rb +6 -2
  29. data/lib/rubygems/specification.rb +10 -2
  30. data/lib/rubygems/stub_specification.rb +11 -5
  31. data/lib/rubygems/test_case.rb +31 -0
  32. data/lib/rubygems/text.rb +2 -2
  33. data/lib/rubygems/user_interaction.rb +0 -1
  34. data/test/rubygems/test_gem.rb +15 -32
  35. data/test/rubygems/test_gem_commands_pristine_command.rb +92 -0
  36. data/test/rubygems/test_gem_package_tar_writer.rb +10 -6
  37. data/test/rubygems/test_gem_remote_fetcher.rb +25 -1
  38. data/test/rubygems/test_gem_request_set_lockfile.rb +28 -0
  39. data/test/rubygems/test_gem_resolver_api_specification.rb +2 -2
  40. data/test/rubygems/test_gem_resolver_installer_set.rb +14 -0
  41. data/test/rubygems/test_gem_source.rb +14 -0
  42. data/test/rubygems/test_gem_specification.rb +50 -1
  43. data/test/rubygems/test_gem_stub_specification.rb +9 -1
  44. data/test/rubygems/test_gem_text.rb +16 -0
  45. data/test/rubygems/test_kernel.rb +24 -0
  46. metadata +4 -3
  47. data/CONTRIBUTING +0 -32
@@ -108,6 +108,7 @@ gems:
108
108
  end
109
109
 
110
110
  def teardown
111
+ @fetcher.close_all
111
112
  self.class.stop_servers
112
113
  super
113
114
  Gem.configuration[:http_proxy] = nil
@@ -134,6 +135,7 @@ gems:
134
135
 
135
136
  def test_fetch_size_bad_uri
136
137
  fetcher = Gem::RemoteFetcher.new nil
138
+ @fetcher = fetcher
137
139
 
138
140
  e = assert_raises ArgumentError do
139
141
  fetcher.fetch_size 'gems.example.com/yaml'
@@ -144,6 +146,7 @@ gems:
144
146
 
145
147
  def test_fetch_size_socket_error
146
148
  fetcher = Gem::RemoteFetcher.new nil
149
+ @fetcher = fetcher
147
150
  def fetcher.request(uri, request_class, last_modified = nil)
148
151
  raise SocketError, "tarded"
149
152
  end
@@ -172,6 +175,7 @@ gems:
172
175
  dns.expect :getresource, target, [String, Object]
173
176
 
174
177
  fetch = Gem::RemoteFetcher.new nil, dns
178
+ @fetcher = fetcher
175
179
  assert_equal URI.parse("http://blah.com/foo"), fetch.api_endpoint(uri)
176
180
 
177
181
  target.verify
@@ -435,6 +439,7 @@ gems:
435
439
 
436
440
  def test_fetch_path_gzip
437
441
  fetcher = Gem::RemoteFetcher.new nil
442
+ @fetcher = fetcher
438
443
 
439
444
  def fetcher.fetch_http(uri, mtime, head = nil)
440
445
  Gem.gzip 'foo'
@@ -445,6 +450,7 @@ gems:
445
450
 
446
451
  def test_fetch_path_gzip_unmodified
447
452
  fetcher = Gem::RemoteFetcher.new nil
453
+ @fetcher = fetcher
448
454
 
449
455
  def fetcher.fetch_http(uri, mtime, head = nil)
450
456
  nil
@@ -455,6 +461,7 @@ gems:
455
461
 
456
462
  def test_fetch_path_io_error
457
463
  fetcher = Gem::RemoteFetcher.new nil
464
+ @fetcher = fetcher
458
465
 
459
466
  def fetcher.fetch_http(*)
460
467
  raise EOFError
@@ -472,6 +479,7 @@ gems:
472
479
 
473
480
  def test_fetch_path_socket_error
474
481
  fetcher = Gem::RemoteFetcher.new nil
482
+ @fetcher = fetcher
475
483
 
476
484
  def fetcher.fetch_http(uri, mtime, head = nil)
477
485
  raise SocketError
@@ -489,6 +497,7 @@ gems:
489
497
 
490
498
  def test_fetch_path_system_call_error
491
499
  fetcher = Gem::RemoteFetcher.new nil
500
+ @fetcher = fetcher
492
501
 
493
502
  def fetcher.fetch_http(uri, mtime = nil, head = nil)
494
503
  raise Errno::ECONNREFUSED, 'connect(2)'
@@ -507,6 +516,7 @@ gems:
507
516
 
508
517
  def test_fetch_path_unmodified
509
518
  fetcher = Gem::RemoteFetcher.new nil
519
+ @fetcher = fetcher
510
520
 
511
521
  def fetcher.fetch_http(uri, mtime, head = nil)
512
522
  nil
@@ -519,6 +529,7 @@ gems:
519
529
  use_ui @ui do
520
530
  ENV['http_proxy'] = 'http://fakeurl:12345'
521
531
  fetcher = Gem::RemoteFetcher.new :no_proxy
532
+ @fetcher = fetcher
522
533
  assert_data_from_server fetcher.fetch_path(@server_uri)
523
534
  end
524
535
  end
@@ -527,6 +538,7 @@ gems:
527
538
  use_ui @ui do
528
539
  ENV['http_proxy'] = @proxy_uri
529
540
  fetcher = Gem::RemoteFetcher.new nil
541
+ @fetcher = fetcher
530
542
  assert_data_from_proxy fetcher.fetch_path(@server_uri)
531
543
  end
532
544
  end
@@ -535,6 +547,7 @@ gems:
535
547
  use_ui @ui do
536
548
  ENV['HTTP_PROXY'] = @proxy_uri
537
549
  fetcher = Gem::RemoteFetcher.new nil
550
+ @fetcher = fetcher
538
551
  assert_data_from_proxy fetcher.fetch_path(@server_uri)
539
552
  end
540
553
  end
@@ -542,12 +555,14 @@ gems:
542
555
  def test_implicit_proxy_no_env
543
556
  use_ui @ui do
544
557
  fetcher = Gem::RemoteFetcher.new nil
558
+ @fetcher = fetcher
545
559
  assert_data_from_server fetcher.fetch_path(@server_uri)
546
560
  end
547
561
  end
548
562
 
549
563
  def test_fetch_http
550
564
  fetcher = Gem::RemoteFetcher.new nil
565
+ @fetcher = fetcher
551
566
  url = 'http://gems.example.com/redirect'
552
567
 
553
568
  def fetcher.request(uri, request_class, last_modified = nil)
@@ -571,6 +586,7 @@ gems:
571
586
 
572
587
  def test_fetch_http_redirects
573
588
  fetcher = Gem::RemoteFetcher.new nil
589
+ @fetcher = fetcher
574
590
  url = 'http://gems.example.com/redirect'
575
591
 
576
592
  def fetcher.request(uri, request_class, last_modified = nil)
@@ -589,6 +605,7 @@ gems:
589
605
 
590
606
  def test_fetch_s3
591
607
  fetcher = Gem::RemoteFetcher.new nil
608
+ @fetcher = fetcher
592
609
  url = 's3://testuser:testpass@my-bucket/gems/specs.4.8.gz'
593
610
  $fetched_uri = nil
594
611
 
@@ -613,6 +630,7 @@ gems:
613
630
 
614
631
  def test_fetch_s3_no_creds
615
632
  fetcher = Gem::RemoteFetcher.new nil
633
+ @fetcher = fetcher
616
634
  url = 's3://my-bucket/gems/specs.4.8.gz'
617
635
  e = assert_raises Gem::RemoteFetcher::FetchError do
618
636
  fetcher.fetch_s3 URI.parse(url)
@@ -626,6 +644,7 @@ gems:
626
644
  ENV["http_proxy"] = @proxy_uri
627
645
  ENV["no_proxy"] = URI::parse(@server_uri).host
628
646
  fetcher = Gem::RemoteFetcher.new nil
647
+ @fetcher = fetcher
629
648
  assert_data_from_server fetcher.fetch_path(@server_uri)
630
649
  end
631
650
  end
@@ -635,12 +654,14 @@ gems:
635
654
  ENV["http_proxy"] = @proxy_uri
636
655
  ENV["no_proxy"] = "fakeurl.com, #{URI::parse(@server_uri).host}"
637
656
  fetcher = Gem::RemoteFetcher.new nil
657
+ @fetcher = fetcher
638
658
  assert_data_from_server fetcher.fetch_path(@server_uri)
639
659
  end
640
660
  end
641
661
 
642
662
  def test_request_block
643
663
  fetcher = Gem::RemoteFetcher.new nil
664
+ @fetcher = fetcher
644
665
 
645
666
  assert_throws :block_called do
646
667
  fetcher.request URI('http://example'), Net::HTTP::Get do |req|
@@ -654,6 +675,7 @@ gems:
654
675
  use_ui @ui do
655
676
  self.class.enable_yaml = false
656
677
  fetcher = Gem::RemoteFetcher.new nil
678
+ @fetcher = fetcher
657
679
  assert_error { fetcher.size }
658
680
  end
659
681
  end
@@ -736,8 +758,10 @@ gems:
736
758
  end
737
759
  Gem.configuration = Gem::ConfigFile.new %W[--config-file #{temp_conf}]
738
760
  end
739
- yield Gem::RemoteFetcher.new
761
+ fetcher = Gem::RemoteFetcher.new
762
+ yield fetcher
740
763
  ensure
764
+ fetcher.close_all
741
765
  Gem.configuration = nil
742
766
  end
743
767
 
@@ -303,6 +303,34 @@ DEPENDENCIES
303
303
  assert_equal expected, @set.dependencies
304
304
  end
305
305
 
306
+ def test_parse_DEPENDENCIES_git_version
307
+ write_lockfile <<-LOCKFILE
308
+ GIT
309
+ remote: git://github.com/progrium/ruby-jwt.git
310
+ revision: 8d74770c6cd92ea234b428b5d0c1f18306a4f41c
311
+ specs:
312
+ jwt (1.1)
313
+
314
+ GEM
315
+ remote: http://gems.example/
316
+ specs:
317
+
318
+ PLATFORMS
319
+ ruby
320
+
321
+ DEPENDENCIES
322
+ jwt (= 1.1)!
323
+ LOCKFILE
324
+
325
+ @lockfile.parse
326
+
327
+ expected = [
328
+ dep('jwt', '= 1.1'),
329
+ ]
330
+
331
+ assert_equal expected, @set.dependencies
332
+ end
333
+
306
334
  def test_parse_GEM
307
335
  write_lockfile <<-LOCKFILE
308
336
  GEM
@@ -7,7 +7,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
7
7
  data = {
8
8
  :name => 'rails',
9
9
  :number => '3.0.3',
10
- :platform => 'ruby',
10
+ :platform => Gem::Platform.local.to_s,
11
11
  :dependencies => [
12
12
  ['bundler', '~> 1.0'],
13
13
  ['railties', '= 3.0.3'],
@@ -18,7 +18,7 @@ class TestGemResolverAPISpecification < Gem::TestCase
18
18
 
19
19
  assert_equal 'rails', spec.name
20
20
  assert_equal Gem::Version.new('3.0.3'), spec.version
21
- assert_equal Gem::Platform::RUBY, spec.platform
21
+ assert_equal Gem::Platform.local, spec.platform
22
22
 
23
23
  expected = [
24
24
  Gem::Dependency.new('bundler', '~> 1.0'),
@@ -189,6 +189,20 @@ class TestGemResolverInstallerSet < Gem::TestCase
189
189
  assert_equal specs["a-2-#{Gem::Platform.local}"].full_name, spec.full_name
190
190
  end
191
191
 
192
+ def test_prefetch
193
+ set = Gem::Resolver::InstallerSet.new :remote
194
+ def (set.remote_set).prefetch(_)
195
+ raise "called"
196
+ end
197
+ assert_raises(RuntimeError){ set.prefetch(nil) }
198
+
199
+ set = Gem::Resolver::InstallerSet.new :local
200
+ def (set.remote_set).prefetch(_)
201
+ raise "called"
202
+ end
203
+ assert_equal nil, set.prefetch(nil)
204
+ end
205
+
192
206
  def test_prerelease_equals
193
207
  set = Gem::Resolver::InstallerSet.new :remote
194
208
 
@@ -21,6 +21,20 @@ class TestGemSource < Gem::TestCase
21
21
  @source = Gem::Source.new(@gem_repo)
22
22
  end
23
23
 
24
+ def test_initialize_invalid_uri
25
+ assert_raises URI::InvalidURIError do
26
+ Gem::Source.new 'git@example:a.git'
27
+ end
28
+ end
29
+
30
+ def test_initialize_git
31
+ repository = 'git@example:a.git'
32
+
33
+ source = Gem::Source::Git.new 'a', repository, 'master', false
34
+
35
+ assert_equal repository, source.uri
36
+ end
37
+
24
38
  def test_api_uri
25
39
  assert_equal @source.api_uri, @source.uri
26
40
  end
@@ -1353,7 +1353,7 @@ dependencies: []
1353
1353
  end
1354
1354
 
1355
1355
  expected = "Ignoring ext-1 because its extensions are not built. " +
1356
- "Try: gem pristine ext-1\n"
1356
+ "Try: gem pristine ext --version 1\n"
1357
1357
 
1358
1358
  assert_equal expected, err
1359
1359
  end
@@ -1863,6 +1863,43 @@ dependencies: []
1863
1863
  assert_equal expected, @ext.full_require_paths
1864
1864
  end
1865
1865
 
1866
+ def test_to_fullpath
1867
+ ext_spec
1868
+
1869
+ @ext.require_paths = 'lib'
1870
+
1871
+ dir = File.join(@gemhome, 'gems', @ext.original_name, 'lib')
1872
+ expected_rb = File.join(dir, 'code.rb')
1873
+ FileUtils.mkdir_p dir
1874
+ FileUtils.touch expected_rb
1875
+
1876
+ dir = @ext.extension_dir
1877
+ ext = RbConfig::CONFIG["DLEXT"]
1878
+ expected_so = File.join(dir, "ext.#{ext}")
1879
+ FileUtils.mkdir_p dir
1880
+ FileUtils.touch expected_so
1881
+
1882
+ assert_nil @ext.to_fullpath("code")
1883
+ assert_nil @ext.to_fullpath("code.rb")
1884
+ assert_nil @ext.to_fullpath("code.#{ext}")
1885
+
1886
+ assert_nil @ext.to_fullpath("ext")
1887
+ assert_nil @ext.to_fullpath("ext.rb")
1888
+ assert_nil @ext.to_fullpath("ext.#{ext}")
1889
+
1890
+ @ext.activate
1891
+
1892
+ assert_equal expected_rb, @ext.to_fullpath("code")
1893
+ assert_equal expected_rb, @ext.to_fullpath("code.rb")
1894
+ assert_nil @ext.to_fullpath("code.#{ext}")
1895
+
1896
+ assert_equal expected_so, @ext.to_fullpath("ext")
1897
+ assert_nil @ext.to_fullpath("ext.rb")
1898
+ assert_equal expected_so, @ext.to_fullpath("ext.#{ext}")
1899
+
1900
+ assert_nil @ext.to_fullpath("notexist")
1901
+ end
1902
+
1866
1903
  def test_require_already_activated
1867
1904
  save_loaded_features do
1868
1905
  a1 = new_spec "a", "1", nil, "lib/d.rb"
@@ -3010,6 +3047,18 @@ end
3010
3047
  assert_equal ["default-2.0.0.0"], Gem::Specification.map(&:full_name)
3011
3048
  end
3012
3049
 
3050
+ def test_detect_bundled_gem_in_old_ruby
3051
+ util_set_RUBY_VERSION '1.9.3', 551
3052
+
3053
+ spec = new_spec 'bigdecimal', '1.1.0' do |s|
3054
+ s.summary = "This bigdecimal is bundled with Ruby"
3055
+ end
3056
+
3057
+ assert spec.bundled_gem_in_old_ruby?
3058
+ ensure
3059
+ util_restore_RUBY_VERSION
3060
+ end
3061
+
3013
3062
  def util_setup_deps
3014
3063
  @gem = util_spec "awesome", "1.0" do |awesome|
3015
3064
  awesome.add_runtime_dependency "bonobo", []
@@ -55,7 +55,7 @@ class TestStubSpecification < Gem::TestCase
55
55
  end
56
56
 
57
57
  expected = "Ignoring stub_e-2 because its extensions are not built. " +
58
- "Try: gem pristine stub_e-2\n"
58
+ "Try: gem pristine stub_e --version 2\n"
59
59
 
60
60
  assert_equal expected, err
61
61
  end
@@ -122,6 +122,14 @@ class TestStubSpecification < Gem::TestCase
122
122
  assert_same real_foo, @foo.to_spec
123
123
  end
124
124
 
125
+ def test_to_spec_with_other_specs_loaded_does_not_warn
126
+ real_foo = util_spec @foo.name, @foo.version
127
+ real_foo.activate
128
+ bar = Gem::StubSpecification.new BAR
129
+ refute_predicate Gem.loaded_specs, :empty?
130
+ assert bar.to_spec
131
+ end
132
+
125
133
  def test_to_spec_activated
126
134
  assert @foo.to_spec.is_a?(Gem::Specification)
127
135
  assert_equal "foo", @foo.to_spec.name
@@ -35,6 +35,22 @@ Without the wrapping, the text might not look good in the RSS feed.
35
35
  assert_equal expected, format_text(text, 78)
36
36
  end
37
37
 
38
+ def test_min3
39
+ assert_equal 1, min3(1, 1, 1)
40
+ assert_equal 1, min3(1, 1, 2)
41
+ assert_equal 1, min3(1, 2, 1)
42
+ assert_equal 1, min3(2, 1, 1)
43
+ assert_equal 1, min3(1, 2, 2)
44
+ assert_equal 1, min3(2, 1, 2)
45
+ assert_equal 1, min3(2, 2, 1)
46
+ assert_equal 1, min3(1, 2, 3)
47
+ assert_equal 1, min3(1, 3, 2)
48
+ assert_equal 1, min3(2, 1, 3)
49
+ assert_equal 1, min3(2, 3, 1)
50
+ assert_equal 1, min3(3, 1, 2)
51
+ assert_equal 1, min3(3, 2, 1)
52
+ end
53
+
38
54
  def test_levenshtein_distance_add
39
55
  assert_equal 2, levenshtein_distance("zentest", "zntst")
40
56
  assert_equal 2, levenshtein_distance("zntst", "zentest")
@@ -21,6 +21,30 @@ class TestKernel < Gem::TestCase
21
21
  assert $:.any? { |p| %r{a-1/lib} =~ p }
22
22
  end
23
23
 
24
+ def test_gem_default
25
+ assert gem('a', '>= 0')
26
+
27
+ assert_equal @a2, Gem.loaded_specs['a']
28
+ end
29
+
30
+ def test_gem_default_re_gem
31
+ assert gem('a', '=1')
32
+
33
+ refute gem('a', '>= 0')
34
+
35
+ assert_equal @a1, Gem.loaded_specs['a']
36
+ end
37
+
38
+ def test_gem_re_gem_mismatch
39
+ assert gem('a', '=1')
40
+
41
+ assert_raises Gem::LoadError do
42
+ gem('a', '= 2')
43
+ end
44
+
45
+ assert_equal @a1, Gem.loaded_specs['a']
46
+ end
47
+
24
48
  def test_gem_redundant
25
49
  assert gem('a', '= 1'), "Should load"
26
50
  refute gem('a', '= 1'), "Should not load"
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
4
+ version: 2.4.5
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-11-14 00:00:00.000000000 Z
13
+ date: 2014-12-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: minitest
@@ -141,6 +141,7 @@ executables:
141
141
  - update_rubygems
142
142
  extensions: []
143
143
  extra_rdoc_files:
144
+ - CONTRIBUTING.rdoc
144
145
  - CVE-2013-4287.txt
145
146
  - CVE-2013-4363.txt
146
147
  - History.txt
@@ -154,7 +155,7 @@ files:
154
155
  - ".autotest"
155
156
  - ".document"
156
157
  - ".gemtest"
157
- - CONTRIBUTING
158
+ - CONTRIBUTING.rdoc
158
159
  - CVE-2013-4287.txt
159
160
  - CVE-2013-4363.txt
160
161
  - History.txt