diff options
author | Hiroshi SHIBATA <[email protected]> | 2021-04-15 12:47:18 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2021-04-15 15:36:15 +0900 |
commit | 96741765d880b700933526a97a67345dfcd90c47 () | |
tree | 565766c43e97b7deb93f2390af955465a85ee668 | |
parent | ed149dbf46d1a8b16e6de9c3dbbcc10f72c9c019 (diff) |
Merge the master branch of RubyGems
Notes: Merged: https://.com/ruby/ruby/pull/4383
-rw-r--r-- | lib/rubygems.rb | 4 | ||||
-rw-r--r-- | lib/rubygems/commands/update_command.rb | 24 | ||||
-rw-r--r-- | lib/rubygems/defaults.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/indexer.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/installer.rb | 7 | ||||
-rw-r--r-- | lib/rubygems/package.rb | 9 | ||||
-rw-r--r-- | lib/rubygems/platform.rb | 10 | ||||
-rw-r--r-- | lib/rubygems/remote_fetcher.rb | 11 | ||||
-rw-r--r-- | lib/rubygems/security/trust_dir.rb | 1 | ||||
-rw-r--r-- | lib/rubygems/test_utilities.rb | 2 | ||||
-rw-r--r-- | test/rubygems/packages/ascii_binder-0.1.10.1.gem | bin | 0 -> 244736 bytes | |||
-rw-r--r-- | test/rubygems/test_gem_commands_setup_command.rb | 2 | ||||
-rw-r--r-- | test/rubygems/test_gem_commands_update_command.rb | 29 | ||||
-rw-r--r-- | test/rubygems/test_gem_installer.rb | 22 | ||||
-rw-r--r-- | test/rubygems/test_gem_package.rb | 4 | ||||
-rw-r--r-- | test/rubygems/test_gem_platform.rb | 29 | ||||
-rw-r--r-- | test/rubygems/test_gem_remote_fetcher.rb | 38 | ||||
-rw-r--r-- | test/rubygems/test_gem_server.rb | 8 |
18 files changed, 133 insertions, 71 deletions
@@ -813,7 +813,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} ## # Safely write a file in binary mode on all platforms. def self.write_binary(path, data) - open(path, 'wb') do |io| begin io.flock(File::LOCK_EX) rescue *WRITE_BINARY_ERRORS @@ -824,7 +824,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} if Thread.main != Thread.current raise else - open(path, 'wb') do |io| io.write data end end @@ -81,7 +81,7 @@ command to remove old versions. def check_oldest_rubygems(version) # :nodoc: if oldest_supported_version > version - alert_error "rubygems #{version} is not supported. The oldest supported version is #{oldest_supported_version}" terminate_interaction 1 end end @@ -327,8 +327,26 @@ command to remove old versions. private def oldest_supported_version - # for Ruby 2.3 - @oldest_supported_version ||= Gem::Version.new("2.5.2") end end @@ -198,7 +198,7 @@ module Gem def self.default_bindir if defined? RUBY_FRAMEWORK_VERSION # mac framework support - '/usr/bin' else # generic install RbConfig::CONFIG['bindir'] end @@ -136,7 +136,7 @@ class Gem::Indexer say "Generating #{name} index" Gem.time "Generated #{name} index" do - open(file, 'wb') do |io| specs = index.map do |*spec| # We have to splat here because latest_specs is an array, while the # others are hashes. @@ -484,8 +484,11 @@ class Gem::Installer bin_path = File.join gem_dir, spec.bindir, filename unless File.exist? bin_path - # TODO change this to a more useful warning - warn "`#{bin_path}` does not exist, maybe `gem pristine #{spec.name}` will fix it?" next end @@ -252,14 +252,7 @@ class Gem::Package stat = File.lstat file if stat.symlink? - target_path = File.readlink(file) - - unless target_path.start_with? '.' - relative_dir = File.dirname(file).sub("#{Dir.pwd}/", '') - target_path = File.join(relative_dir, target_path) - end - - tar.add_symlink file, target_path, stat.mode end next unless stat.file? @@ -66,7 +66,7 @@ class Gem::Platform when String then arch = arch.split '-' - if arch.length > 2 and arch.last !~ /\d+(\.\d+)?$/ # reassemble x86-linux-{libc} extra = arch.pop arch.last << "-#{extra}" end @@ -146,8 +146,7 @@ class Gem::Platform ## # Does +other+ match this platform? Two platforms match if they have the # same CPU, or either has a CPU of 'universal', they have the same OS, and - # they have the same version, or either has no version (except for 'linux' - # where the version is the libc name, with no version standing for 'gnu') # # Additionally, the platform will match if the local CPU is 'arm' and the # other CPU starts with "arm" (for generic ARM family support). @@ -163,10 +162,7 @@ class Gem::Platform @os == other.os and # version - ( - (@os != 'linux' and (@version.nil? or other.version.nil?)) or - @version == other.version - ) end ## @@ -51,6 +51,7 @@ class Gem::RemoteFetcher class UnknownHostError < FetchError end @fetcher = nil @@ -262,15 +263,9 @@ class Gem::RemoteFetcher end data - rescue Timeout::Error - raise UnknownHostError.new('timed out', uri) - rescue IOError, SocketError, SystemCallError, *(OpenSSL::SSL::SSLError if Gem::HAVE_OPENSSL) => e - if e.message =~ /getaddrinfo/ - raise UnknownHostError.new('no such name', uri) - else - raise FetchError.new("#{e.class}: #{e}", uri) - end end def fetch_s3(uri, mtime = nil, head = false) @@ -104,6 +104,7 @@ class Gem::Security::TrustDir # permissions. def verify if File.exist? @dir raise Gem::Security::Exception, "trust directory #{@dir} is not a directory" unless @@ -76,7 +76,7 @@ class Gem::FakeFetcher def cache_update_path(uri, path = nil, update = true) if data = fetch_path(uri) - open(path, 'wb') {|io| io.write data } if path and update data else Gem.read_binary(path) if path Binary files differ@@ -48,7 +48,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase io.puts gemspec.to_ruby end - open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"), 'w') do |io| gemspec.version = "1.15.4" io.puts gemspec.to_ruby end @@ -168,6 +168,15 @@ class TestGemCommandsUpdateCommand < Gem::TestCase @cmd.options[:args] = [] @cmd.options[:system] = "2.5.1" assert_raises Gem::MockGemUi::TermError do use_ui @ui do @cmd.execute @@ -175,7 +184,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase end assert_empty @ui.output - assert_equal "ERROR: rubygems 2.5.1 is not supported. The oldest supported version is 2.5.2\n", @ui.error end def test_execute_system_specific_older_than_3_2_removes_plugins_dir @@ -185,6 +194,15 @@ class TestGemCommandsUpdateCommand < Gem::TestCase end end @cmd.options[:args] = [] @cmd.options[:system] = "3.1" @@ -203,6 +221,15 @@ class TestGemCommandsUpdateCommand < Gem::TestCase end end @cmd.options[:args] = [] @cmd.options[:system] = "3.2.a" @@ -730,11 +730,31 @@ gem 'other', version installer.generate_bin default_shebang = Gem.ruby - shebang_line = open("#{@gemhome}/bin/executable") {|f| f.readlines.first } assert_match(/\A#!/, shebang_line) assert_match(/#{default_shebang}/, shebang_line) end def test_generate_plugins installer = util_setup_installer do |spec| write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io| @@ -218,7 +218,7 @@ class TestGemPackage < Gem::Package::TarTestCase end assert_equal %w[lib/code.rb], files - assert_equal [{'lib/code_sym.rb' => 'lib/code.rb'}, {'lib/code_sym2.rb' => '../lib/code.rb'}], symlinks end def test_build @@ -937,7 +937,7 @@ class TestGemPackage < Gem::Package::TarTestCase build = Gem::Package.new @gem build.spec = @spec build.setup_signer - open @gem, 'wb' do |gem_io| Gem::Package::TarWriter.new gem_io do |gem| build.add_metadata gem build.add_contents gem @@ -134,9 +134,7 @@ class TestGemPlatform < Gem::TestCase 'i386-solaris2.8' => ['x86', 'solaris', '2.8'], 'mswin32' => ['x86', 'mswin32', nil], 'x86_64-linux' => ['x86_64', 'linux', nil], - 'x86_64-linux-gnu' => ['x86_64', 'linux', nil], 'x86_64-linux-musl' => ['x86_64', 'linux', 'musl'], - 'x86_64-linux-uclibc' => ['x86_64', 'linux', 'uclibc'], 'x86_64-openbsd3.9' => ['x86_64', 'openbsd', '3.9'], 'x86_64-openbsd4.0' => ['x86_64', 'openbsd', '4.0'], 'x86_64-openbsd' => ['x86_64', 'openbsd', nil], @@ -145,7 +143,6 @@ class TestGemPlatform < Gem::TestCase test_cases.each do |arch, expected| platform = Gem::Platform.new arch assert_equal expected, platform.to_a, arch.inspect - assert_equal expected, Gem::Platform.new(platform.to_s).to_a, arch.inspect end end @@ -264,32 +261,6 @@ class TestGemPlatform < Gem::TestCase assert((with_x86_arch === with_nil_arch), 'x86 =~ nil') end - def test_nil_version_is_treated_as_any_version - x86_darwin_8 = Gem::Platform.new 'i686-darwin8.0' - x86_darwin_nil = Gem::Platform.new 'i686-darwin' - - assert((x86_darwin_8 === x86_darwin_nil), '8.0 =~ nil') - assert((x86_darwin_nil === x86_darwin_8), 'nil =~ 8.0') - end - - def test_nil_version_is_stricter_for_linux_os - x86_linux = Gem::Platform.new 'i686-linux' - x86_linux_gnu = Gem::Platform.new 'i686-linux-gnu' - x86_linux_musl = Gem::Platform.new 'i686-linux-musl' - x86_linux_uclibc = Gem::Platform.new 'i686-linux-uclibc' - - assert((x86_linux === x86_linux_gnu), 'linux =~ linux-gnu') - assert((x86_linux_gnu === x86_linux), 'linux-gnu =~ linux') - assert(!(x86_linux_gnu === x86_linux_musl), 'linux-gnu =~ linux-musl') - assert(!(x86_linux_musl === x86_linux_gnu), 'linux-musl =~ linux-gnu') - assert(!(x86_linux_uclibc === x86_linux_musl), 'linux-uclibc =~ linux-musl') - assert(!(x86_linux_musl === x86_linux_uclibc), 'linux-musl =~ linux-uclibc') - assert(!(x86_linux === x86_linux_musl), 'linux =~ linux-musl') - assert(!(x86_linux_musl === x86_linux), 'linux-musl =~ linux') - assert(!(x86_linux === x86_linux_uclibc), 'linux =~ linux-uclibc') - assert(!(x86_linux_uclibc === x86_linux), 'linux-uclibc =~ linux') - end - def test_equals3_cpu_arm arm = Gem::Platform.new 'arm-linux' armv5 = Gem::Platform.new 'armv5-linux' @@ -496,6 +496,44 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg== assert_equal url, e.uri end def test_fetch_path_openssl_ssl_sslerror fetcher = Gem::RemoteFetcher.new nil @fetcher = fetcher @@ -365,7 +365,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -420,7 +420,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -475,7 +475,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -502,7 +502,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end |