rubygems-update 3.0.4 → 3.0.9

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/History.txt +85 -0
  4. data/Manifest.txt +5 -3
  5. data/Rakefile +8 -6
  6. data/bundler/lib/bundler/build_metadata.rb +2 -2
  7. data/lib/rubygems.rb +6 -12
  8. data/lib/rubygems/commands/push_command.rb +2 -0
  9. data/lib/rubygems/commands/setup_command.rb +9 -11
  10. data/lib/rubygems/commands/uninstall_command.rb +16 -6
  11. data/lib/rubygems/commands/which_command.rb +1 -3
  12. data/lib/rubygems/defaults.rb +1 -8
  13. data/lib/rubygems/dependency.rb +1 -1
  14. data/lib/rubygems/dependency_installer.rb +1 -2
  15. data/lib/rubygems/exceptions.rb +0 -4
  16. data/lib/rubygems/gemcutter_utilities.rb +9 -5
  17. data/lib/rubygems/installer.rb +8 -5
  18. data/lib/rubygems/installer_test_case.rb +2 -2
  19. data/lib/rubygems/package/tar_header.rb +11 -2
  20. data/lib/rubygems/remote_fetcher.rb +15 -54
  21. data/lib/rubygems/request.rb +1 -1
  22. data/lib/rubygems/request_set/gem_dependency_api.rb +3 -5
  23. data/lib/rubygems/resolver.rb +4 -1
  24. data/lib/rubygems/s3_uri_signer.rb +183 -0
  25. data/lib/rubygems/security_option.rb +0 -1
  26. data/lib/rubygems/specification.rb +13 -14
  27. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  28. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  29. data/lib/rubygems/stub_specification.rb +1 -2
  30. data/lib/rubygems/test_case.rb +8 -4
  31. data/lib/rubygems/util.rb +12 -0
  32. data/rubygems-update.gemspec +1 -1
  33. data/test/rubygems/test_bundled_ca.rb +7 -4
  34. data/test/rubygems/test_gem.rb +40 -3
  35. data/test/rubygems/test_gem_commands_push_command.rb +15 -0
  36. data/test/rubygems/test_gem_commands_setup_command.rb +11 -7
  37. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -1
  38. data/test/rubygems/test_gem_indexer.rb +8 -8
  39. data/test/rubygems/test_gem_installer.rb +78 -19
  40. data/test/rubygems/test_gem_package_tar_header.rb +41 -0
  41. data/test/rubygems/test_gem_remote_fetcher.rb +133 -14
  42. data/test/rubygems/test_gem_request.rb +4 -4
  43. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +20 -30
  44. data/test/rubygems/test_gem_specification.rb +29 -0
  45. data/test/rubygems/test_gem_util.rb +8 -0
  46. data/util/cops/deprecations.rb +52 -0
  47. data/util/create_certs.sh +27 -0
  48. data/util/update_bundled_ca_certificates.rb +1 -3
  49. metadata +12 -9
  50. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  51. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
@@ -313,7 +313,7 @@ gem 'other', version
313
313
  @installer.wrappers = true
314
314
 
315
315
  @spec.executables = %w[executable]
316
- @spec.bindir = '.'
316
+ @spec.bindir = 'bin'
317
317
 
318
318
  exec_file = @installer.formatted_program_filename 'executable'
319
319
  exec_path = File.join @spec.gem_dir, exec_file
@@ -325,7 +325,7 @@ gem 'other', version
325
325
 
326
326
  @installer.generate_bin
327
327
 
328
- assert_equal true, File.directory?(util_inst_bindir)
328
+ assert_directory_exists (util_inst_bindir)
329
329
  installed_exec = File.join(util_inst_bindir, 'executable')
330
330
  assert_path_exists installed_exec
331
331
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -366,7 +366,7 @@ gem 'other', version
366
366
  @installer.gem_dir = @spec.gem_dir
367
367
 
368
368
  @installer.generate_bin
369
- assert File.directory? util_inst_bindir
369
+ assert_directory_exists util_inst_bindir
370
370
  installed_exec = File.join util_inst_bindir, 'executable'
371
371
  assert_path_exists installed_exec
372
372
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -383,7 +383,7 @@ gem 'other', version
383
383
 
384
384
  Gem::Installer.exec_format = 'foo-%s-bar'
385
385
  @installer.generate_bin
386
- assert_equal true, File.directory?(util_inst_bindir)
386
+ assert_directory_exists util_inst_bindir
387
387
  installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
388
388
  assert_path_exists installed_exec
389
389
  ensure
@@ -397,7 +397,7 @@ gem 'other', version
397
397
 
398
398
  Gem::Installer.exec_format = 'foo-%s-bar'
399
399
  @installer.generate_bin
400
- assert_equal true, File.directory?(util_inst_bindir)
400
+ assert_directory_exists util_inst_bindir
401
401
  installed_exec = File.join util_inst_bindir, 'executable'
402
402
  assert_path_exists installed_exec
403
403
  ensure
@@ -496,7 +496,7 @@ gem 'other', version
496
496
  end
497
497
 
498
498
  @installer.generate_bin
499
- assert_equal true, File.directory?(util_inst_bindir)
499
+ assert_directory_exists util_inst_bindir
500
500
  assert_path_exists installed_exec
501
501
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
502
502
 
@@ -514,7 +514,7 @@ gem 'other', version
514
514
  @installer.gem_dir = @spec.gem_dir
515
515
 
516
516
  @installer.generate_bin
517
- assert_equal true, File.directory?(util_inst_bindir)
517
+ assert_directory_exists util_inst_bindir
518
518
  installed_exec = File.join util_inst_bindir, 'executable'
519
519
  assert_equal true, File.symlink?(installed_exec)
520
520
  assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
@@ -666,7 +666,7 @@ gem 'other', version
666
666
  @installer.generate_bin
667
667
  end
668
668
 
669
- assert_equal true, File.directory?(util_inst_bindir)
669
+ assert_directory_exists util_inst_bindir
670
670
  installed_exec = File.join(util_inst_bindir, 'executable')
671
671
  assert_path_exists installed_exec
672
672
 
@@ -977,16 +977,16 @@ gem 'other', version
977
977
 
978
978
  def test_install_missing_dirs
979
979
  FileUtils.rm_f File.join(Gem.dir, 'cache')
980
- FileUtils.rm_f File.join(Gem.dir, 'docs')
980
+ FileUtils.rm_f File.join(Gem.dir, 'doc')
981
981
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
982
982
 
983
983
  use_ui @ui do
984
984
  @installer.install
985
985
  end
986
986
 
987
- File.directory? File.join(Gem.dir, 'cache')
988
- File.directory? File.join(Gem.dir, 'docs')
989
- File.directory? File.join(Gem.dir, 'specifications')
987
+ assert_directory_exists File.join(Gem.dir, 'cache')
988
+ assert_directory_exists File.join(Gem.dir, 'doc')
989
+ assert_directory_exists File.join(Gem.dir, 'specifications')
990
990
 
991
991
  assert_path_exists File.join @gemhome, 'cache', @spec.file_name
992
992
  assert_path_exists File.join @gemhome, 'specifications', @spec.spec_name
@@ -1822,28 +1822,87 @@ gem 'other', version
1822
1822
  assert_predicate spec, :default_gem?
1823
1823
  end
1824
1824
 
1825
- def test_default_gem
1825
+ def test_default_gem_without_wrappers
1826
1826
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
1827
1827
 
1828
- @installer.wrappers = true
1828
+ @installer.wrappers = false
1829
1829
  @installer.options[:install_as_default] = true
1830
1830
  @installer.gem_dir = @spec.gem_dir
1831
- @installer.generate_bin
1832
1831
 
1833
1832
  use_ui @ui do
1834
1833
  @installer.install
1835
1834
  end
1836
1835
 
1837
- assert File.directory? util_inst_bindir
1838
- installed_exec = File.join util_inst_bindir, 'executable'
1836
+ assert_directory_exists File.join(@spec.gem_dir, 'bin')
1837
+ installed_exec = File.join @spec.gem_dir, 'bin', 'executable'
1839
1838
  assert_path_exists installed_exec
1840
1839
 
1841
- assert File.directory? File.join(Gem.default_dir, 'specifications')
1842
- assert File.directory? File.join(Gem.default_dir, 'specifications', 'default')
1840
+ assert_directory_exists File.join(Gem.default_dir, 'specifications')
1841
+ assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
1843
1842
 
1844
1843
  default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'a-2.gemspec')
1845
1844
  assert_equal Gem::Version.new("2"), default_spec.version
1846
1845
  assert_equal ['bin/executable'], default_spec.files
1846
+
1847
+ assert_directory_exists util_inst_bindir
1848
+
1849
+ installed_exec = File.join util_inst_bindir, 'executable'
1850
+ assert_path_exists installed_exec
1851
+
1852
+ wrapper = File.read installed_exec
1853
+ refute_match %r|generated by RubyGems|, wrapper
1854
+ end
1855
+
1856
+ def test_default_gem_with_wrappers
1857
+ FileUtils.rm_f File.join(Gem.dir, 'specifications')
1858
+
1859
+ @installer.wrappers = true
1860
+ @installer.options[:install_as_default] = true
1861
+ @installer.gem_dir = @spec.gem_dir
1862
+
1863
+ use_ui @ui do
1864
+ @installer.install
1865
+ end
1866
+
1867
+ assert_directory_exists util_inst_bindir
1868
+
1869
+ installed_exec = File.join util_inst_bindir, 'executable'
1870
+ assert_path_exists installed_exec
1871
+
1872
+ wrapper = File.read installed_exec
1873
+ assert_match %r|generated by RubyGems|, wrapper
1874
+ end
1875
+
1876
+ def test_default_gem_with_exe_as_bindir
1877
+ FileUtils.rm_f File.join(Gem.dir, 'specifications')
1878
+
1879
+ @spec = quick_gem 'c' do |spec|
1880
+ util_make_exec spec, '#!/usr/bin/ruby', 'exe'
1881
+ end
1882
+
1883
+ util_build_gem @spec
1884
+
1885
+ @spec.cache_file
1886
+
1887
+ installer = util_installer @spec, @gemhome
1888
+
1889
+ installer.options[:install_as_default] = true
1890
+ installer.gem_dir = @spec.gem_dir
1891
+
1892
+ use_ui @ui do
1893
+ installer.install
1894
+ end
1895
+
1896
+ assert_directory_exists File.join(@spec.gem_dir, 'exe')
1897
+ installed_exec = File.join @spec.gem_dir, 'exe', 'executable'
1898
+ assert_path_exists installed_exec
1899
+
1900
+ assert_directory_exists File.join(Gem.default_dir, 'specifications')
1901
+ assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
1902
+
1903
+ default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'c-2.gemspec')
1904
+ assert_equal Gem::Version.new("2"), default_spec.version
1905
+ assert_equal ['exe/executable'], default_spec.files
1847
1906
  end
1848
1907
 
1849
1908
  def old_ruby_required(requirement)
@@ -164,4 +164,45 @@ group\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
164
164
  end
165
165
  end
166
166
 
167
+ def test_big_uid_gid
168
+ stream = StringIO.new(
169
+ <<-EOF.dup.force_encoding('binary').split("\n").join
170
+ GeoIP2-City_20190528/
171
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
172
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
173
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
174
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000000755\x00\x80\x00
175
+ \x00\x00v\xB2Z\x9E\x80\x00\x00\x00v\xB2Z\x9E00000000000\x0013473270100\x00015424
176
+ \x00 5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
177
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
178
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
179
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
180
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ustar \x00
181
+ tjmather\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
182
+ \x00\x00\x00\x00\x00tjmather\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
183
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
184
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
185
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
186
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
187
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
188
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
189
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
190
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
191
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
192
+ \x00\x00\x00\x00
193
+ EOF
194
+ )
195
+
196
+ tar_header = Gem::Package::TarHeader.from stream
197
+
198
+ assert_equal 1991400094, tar_header.uid
199
+ assert_equal 1991400094, tar_header.gid
200
+
201
+ assert_equal 'GeoIP2-City_20190528/', tar_header.name
202
+ assert_equal 0755, tar_header.mode
203
+ assert_equal 0, tar_header.size
204
+ assert_equal 1559064640, tar_header.mtime
205
+ assert_equal 6932, tar_header.checksum
206
+ end
207
+
167
208
  end
@@ -648,10 +648,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
648
648
  assert_equal "murphy", fetcher.fetch_path(@server_uri)
649
649
  end
650
650
 
651
- def assert_fetch_s3(url)
651
+ def assert_fetch_s3(url, signature, token=nil, region='us-east-1', instance_profile_json=nil)
652
652
  fetcher = Gem::RemoteFetcher.new nil
653
653
  @fetcher = fetcher
654
654
  $fetched_uri = nil
655
+ $instance_profile = instance_profile_json
655
656
 
656
657
  def fetcher.request(uri, request_class, last_modified = nil)
657
658
  $fetched_uri = uri
@@ -660,13 +661,21 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
660
661
  res
661
662
  end
662
663
 
663
- def fetcher.s3_expiration
664
- 1395098371
664
+ def fetcher.s3_uri_signer(uri)
665
+ require 'json'
666
+ s3_uri_signer = Gem::S3URISigner.new(uri)
667
+ def s3_uri_signer.ec2_metadata_credentials_json
668
+ JSON.parse($instance_profile)
669
+ end
670
+ # Running sign operation to make sure uri.query is not mutated
671
+ s3_uri_signer.sign
672
+ raise "URI query is not empty: #{uri.query}" unless uri.query.nil?
673
+ s3_uri_signer
665
674
  end
666
675
 
667
676
  data = fetcher.fetch_s3 URI.parse(url)
668
677
 
669
- assert_equal 'https://my-bucket.s3.amazonaws.com/gems/specs.4.8.gz?AWSAccessKeyId=testuser&Expires=1395098371&Signature=eUTr7NkpZEet%2BJySE%2BfH6qukroI%3D', $fetched_uri.to_s
678
+ assert_equal "https://my-bucket.s3.#{region}.amazonaws.com/gems/specs.4.8.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=testuser%2F20190624%2F#{region}%2Fs3%2Faws4_request&X-Amz-Date=20190624T050641Z&X-Amz-Expires=86400#{token ? "&X-Amz-Security-Token=" + token : ""}&X-Amz-SignedHeaders=host&X-Amz-Signature=#{signature}", $fetched_uri.to_s
670
679
  assert_equal 'success', data
671
680
  ensure
672
681
  $fetched_uri = nil
@@ -677,14 +686,132 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
677
686
  'my-bucket' => {:id => 'testuser', :secret => 'testpass'}
678
687
  }
679
688
  url = 's3://my-bucket/gems/specs.4.8.gz'
680
- assert_fetch_s3 url
689
+ Time.stub :now, Time.at(1561353581) do
690
+ assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
691
+ end
692
+ ensure
693
+ Gem.configuration[:s3_source] = nil
694
+ end
695
+
696
+ def test_fetch_s3_config_creds_with_region
697
+ Gem.configuration[:s3_source] = {
698
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :region => 'us-west-2'}
699
+ }
700
+ url = 's3://my-bucket/gems/specs.4.8.gz'
701
+ Time.stub :now, Time.at(1561353581) do
702
+ assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
703
+ end
681
704
  ensure
682
705
  Gem.configuration[:s3_source] = nil
683
706
  end
684
707
 
708
+ def test_fetch_s3_config_creds_with_token
709
+ Gem.configuration[:s3_source] = {
710
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :security_token => 'testtoken'}
711
+ }
712
+ url = 's3://my-bucket/gems/specs.4.8.gz'
713
+ Time.stub :now, Time.at(1561353581) do
714
+ assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
715
+ end
716
+ ensure
717
+ Gem.configuration[:s3_source] = nil
718
+ end
719
+
720
+ def test_fetch_s3_env_creds
721
+ ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
722
+ ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
723
+ ENV['AWS_SESSION_TOKEN'] = nil
724
+ Gem.configuration[:s3_source] = {
725
+ 'my-bucket' => {:provider => 'env'}
726
+ }
727
+ url = 's3://my-bucket/gems/specs.4.8.gz'
728
+ Time.stub :now, Time.at(1561353581) do
729
+ assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
730
+ end
731
+ ensure
732
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
733
+ Gem.configuration[:s3_source] = nil
734
+ end
735
+
736
+ def test_fetch_s3_env_creds_with_region
737
+ ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
738
+ ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
739
+ ENV['AWS_SESSION_TOKEN'] = nil
740
+ Gem.configuration[:s3_source] = {
741
+ 'my-bucket' => {:provider => 'env', :region => 'us-west-2'}
742
+ }
743
+ url = 's3://my-bucket/gems/specs.4.8.gz'
744
+ Time.stub :now, Time.at(1561353581) do
745
+ assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
746
+ end
747
+ ensure
748
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
749
+ Gem.configuration[:s3_source] = nil
750
+ end
751
+
752
+ def test_fetch_s3_env_creds_with_token
753
+ ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
754
+ ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
755
+ ENV['AWS_SESSION_TOKEN'] = 'testtoken'
756
+ Gem.configuration[:s3_source] = {
757
+ 'my-bucket' => {:provider => 'env'}
758
+ }
759
+ url = 's3://my-bucket/gems/specs.4.8.gz'
760
+ Time.stub :now, Time.at(1561353581) do
761
+ assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
762
+ end
763
+ ensure
764
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
765
+ Gem.configuration[:s3_source] = nil
766
+ end
767
+
685
768
  def test_fetch_s3_url_creds
686
769
  url = 's3://testuser:testpass@my-bucket/gems/specs.4.8.gz'
687
- assert_fetch_s3 url
770
+ Time.stub :now, Time.at(1561353581) do
771
+ assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
772
+ end
773
+ end
774
+
775
+ def test_fetch_s3_instance_profile_creds
776
+ Gem.configuration[:s3_source] = {
777
+ 'my-bucket' => {:provider => 'instance_profile'}
778
+ }
779
+
780
+ url = 's3://my-bucket/gems/specs.4.8.gz'
781
+ Time.stub :now, Time.at(1561353581) do
782
+ assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b', nil, 'us-east-1',
783
+ '{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
784
+ end
785
+ ensure
786
+ Gem.configuration[:s3_source] = nil
787
+ end
788
+
789
+ def test_fetch_s3_instance_profile_creds_with_region
790
+ Gem.configuration[:s3_source] = {
791
+ 'my-bucket' => {:provider => 'instance_profile', :region => 'us-west-2'}
792
+ }
793
+
794
+ url = 's3://my-bucket/gems/specs.4.8.gz'
795
+ Time.stub :now, Time.at(1561353581) do
796
+ assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2',
797
+ '{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
798
+ end
799
+ ensure
800
+ Gem.configuration[:s3_source] = nil
801
+ end
802
+
803
+ def test_fetch_s3_instance_profile_creds_with_token
804
+ Gem.configuration[:s3_source] = {
805
+ 'my-bucket' => {:provider => 'instance_profile'}
806
+ }
807
+
808
+ url = 's3://my-bucket/gems/specs.4.8.gz'
809
+ Time.stub :now, Time.at(1561353581) do
810
+ assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken', 'us-east-1',
811
+ '{"AccessKeyId": "testuser", "SecretAccessKey": "testpass", "Token": "testtoken"}'
812
+ end
813
+ ensure
814
+ Gem.configuration[:s3_source] = nil
688
815
  end
689
816
 
690
817
  def refute_fetch_s3(url, expected_message)
@@ -1044,12 +1171,4 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1044
1171
  end
1045
1172
  end
1046
1173
 
1047
- def test_correct_for_windows_path
1048
- path = "/C:/WINDOWS/Temp/gems"
1049
- assert_equal "C:/WINDOWS/Temp/gems", @fetcher.correct_for_windows_path(path)
1050
-
1051
- path = "/home/skillet"
1052
- assert_equal "/home/skillet", @fetcher.correct_for_windows_path(path)
1053
- end
1054
-
1055
1174
  end if defined?(OpenSSL::SSL)
@@ -250,7 +250,7 @@ class TestGemRequest < Gem::TestCase
250
250
  def test_user_agent_engine
251
251
  util_save_version
252
252
 
253
- Object.send :remove_const, :RUBY_ENGINE if defined?(RUBY_ENGINE)
253
+ Object.send :remove_const, :RUBY_ENGINE
254
254
  Object.send :const_set, :RUBY_ENGINE, 'vroom'
255
255
 
256
256
  ua = make_request(@uri, nil, nil, nil).user_agent
@@ -263,7 +263,7 @@ class TestGemRequest < Gem::TestCase
263
263
  def test_user_agent_engine_ruby
264
264
  util_save_version
265
265
 
266
- Object.send :remove_const, :RUBY_ENGINE if defined?(RUBY_ENGINE)
266
+ Object.send :remove_const, :RUBY_ENGINE
267
267
  Object.send :const_set, :RUBY_ENGINE, 'ruby'
268
268
 
269
269
  ua = make_request(@uri, nil, nil, nil).user_agent
@@ -447,7 +447,7 @@ ERROR: Certificate is an invalid CA certificate
447
447
  end
448
448
 
449
449
  def util_restore_version
450
- Object.send :remove_const, :RUBY_ENGINE if defined?(RUBY_ENGINE)
450
+ Object.send :remove_const, :RUBY_ENGINE
451
451
  Object.send :const_set, :RUBY_ENGINE, @orig_RUBY_ENGINE if
452
452
  defined?(@orig_RUBY_ENGINE)
453
453
 
@@ -460,7 +460,7 @@ ERROR: Certificate is an invalid CA certificate
460
460
  end
461
461
 
462
462
  def util_save_version
463
- @orig_RUBY_ENGINE = RUBY_ENGINE if defined? RUBY_ENGINE
463
+ @orig_RUBY_ENGINE = RUBY_ENGINE
464
464
  @orig_RUBY_PATCHLEVEL = RUBY_PATCHLEVEL
465
465
  @orig_RUBY_REVISION = RUBY_REVISION if defined? RUBY_REVISION
466
466
  end
@@ -20,35 +20,28 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
20
20
  end
21
21
 
22
22
  def with_engine_version(name, version)
23
- engine = RUBY_ENGINE if Object.const_defined? :RUBY_ENGINE
24
- engine_version_const = "#{Gem.ruby_engine.upcase}_VERSION"
25
- engine_version = Object.const_get engine_version_const
23
+ engine = RUBY_ENGINE
24
+ engine_version = RUBY_ENGINE_VERSION
26
25
 
27
- Object.send :remove_const, :RUBY_ENGINE if engine
28
- Object.send :remove_const, engine_version_const if name == 'ruby' and
29
- Object.const_defined? engine_version_const
26
+ Object.send :remove_const, :RUBY_ENGINE
27
+ Object.send :remove_const, :RUBY_ENGINE_VERSION
30
28
 
31
- new_engine_version_const = "#{name.upcase}_VERSION"
32
- Object.const_set :RUBY_ENGINE, name if name
33
- Object.const_set new_engine_version_const, version if version
29
+ Object.const_set :RUBY_ENGINE, name if name
30
+ Object.const_set :RUBY_ENGINE_VERSION, version if version
34
31
 
35
32
  Gem.instance_variable_set :@ruby_version, Gem::Version.new(version)
36
33
 
37
- yield
34
+ begin
35
+ yield
36
+ ensure
37
+ Object.send :remove_const, :RUBY_ENGINE if name
38
+ Object.send :remove_const, :RUBY_ENGINE_VERSION if version
38
39
 
39
- ensure
40
- Object.send :remove_const, :RUBY_ENGINE if name
41
- Object.send :remove_const, new_engine_version_const if version
42
-
43
- Object.send :remove_const, engine_version_const if name == 'ruby' and
44
- Object.const_defined? engine_version_const
45
-
46
- Object.const_set :RUBY_ENGINE, engine if engine
47
- Object.const_set engine_version_const, engine_version unless
48
- Object.const_defined? engine_version_const
40
+ Object.const_set :RUBY_ENGINE, engine
41
+ Object.const_set :RUBY_ENGINE_VERSION, engine_version
49
42
 
50
- Gem.send :remove_instance_variable, :@ruby_version if
51
- Gem.instance_variables.include? :@ruby_version
43
+ Gem.send :remove_instance_variable, :@ruby_version
44
+ end
52
45
  end
53
46
 
54
47
  def test_gempspec_with_multiple_runtime_deps
@@ -837,23 +830,20 @@ end
837
830
 
838
831
  def test_with_engine_version
839
832
  version = RUBY_VERSION
840
- engine = Gem.ruby_engine
841
-
842
- engine_version_const = "#{Gem.ruby_engine.upcase}_VERSION"
843
- engine_version = Object.const_get engine_version_const
833
+ engine = Gem.ruby_engine
834
+ engine_version = RUBY_ENGINE_VERSION
844
835
 
845
836
  with_engine_version 'other', '1.2.3' do
846
837
  assert_equal 'other', Gem.ruby_engine
847
- assert_equal '1.2.3', OTHER_VERSION
838
+ assert_equal '1.2.3', RUBY_ENGINE_VERSION
848
839
 
849
- assert_equal version, RUBY_VERSION if engine
840
+ assert_equal version, RUBY_VERSION
850
841
  end
851
842
 
852
843
  assert_equal version, RUBY_VERSION
853
844
  assert_equal engine, Gem.ruby_engine
854
845
 
855
- assert_equal engine_version, Object.const_get(engine_version_const) if
856
- engine
846
+ assert_equal engine_version, RUBY_ENGINE_VERSION if engine
857
847
  end
858
848
 
859
849
  end