rubygems-update 2.4.4 → 2.4.5

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 (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