From 85b29e19a3a95294c54a0204bb94ce31bd7369b7 Mon Sep 17 00:00:00 2001 From: hsbt Date: Sat, 18 Jun 2016 05:11:55 +0000 Subject: * lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems HEAD(2c6d256). It contains to update vendored Molinillo to 0.5.0. https://github.com/rubygems/rubygems/pull/1638 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rubygems/test_bundled_ca.rb | 2 +- test/rubygems/test_gem_installer.rb | 71 ++++++++++++++++++++++++++++ test/rubygems/test_gem_package.rb | 12 +++-- test/rubygems/test_gem_package_tar_writer.rb | 24 ++++++++++ test/rubygems/test_gem_remote_fetcher.rb | 12 +++++ test/rubygems/test_gem_security_signer.rb | 8 ++++ 6 files changed, 125 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/rubygems/test_bundled_ca.rb b/test/rubygems/test_bundled_ca.rb index 5ce2850518..97a64af323 100644 --- a/test/rubygems/test_bundled_ca.rb +++ b/test/rubygems/test_bundled_ca.rb @@ -8,7 +8,7 @@ require 'rubygems/request' # The tested hosts are explained in detail here: https://github.com/rubygems/rubygems/commit/5e16a5428f973667cabfa07e94ff939e7a83ebd9 # -if ENV["TRAVIS"] || ENV["TEST_SSL"] +if ENV["CI"] || ENV["TEST_SSL"] class TestBundledCA < Gem::TestCase THIS_FILE = File.expand_path __FILE__ diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index dedb4c99ca..b8bf24e183 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -1106,6 +1106,77 @@ gem 'other', version assert_path_exists expected_makefile end + def test_install_extension_dir_is_removed_on_reinstall + @spec.extensions << "extconf.rb" + write_file File.join(@tempdir, "extconf.rb") do |io| + io.write <<-RUBY + require "mkmf" + create_makefile("#{@spec.name}") + RUBY + end + + @spec.files += %w[extconf.rb] + + path = Gem::Package.build @spec + + # Install a gem with an extension + use_ui @ui do + installer = Gem::Installer.at path + installer.install + end + + # pretend that a binary file was created as part of the build + should_be_removed = File.join(@spec.extension_dir, "#{@spec.name}.so") + write_file should_be_removed do |io| + io.write "DELETE ME ON REINSTALL" + end + assert_path_exists should_be_removed + + # reinstall the gem, this is also the same as pristine + use_ui @ui do + installer = Gem::Installer.at path + installer.install + end + + refute_path_exists should_be_removed + end + + def test_find_lib_file_after_install + @spec.extensions << "extconf.rb" + write_file File.join(@tempdir, "extconf.rb") do |io| + io.write <<-RUBY + require "mkmf" + create_makefile("#{@spec.name}") + RUBY + end + + write_file File.join(@tempdir, "a.c") do |io| + io.write <<-C + #include + void Init_a() { } + C + end + + Dir.mkdir File.join(@tempdir, "lib") + write_file File.join(@tempdir, 'lib', "b.rb") do |io| + io.write "# b.rb" + end + + @spec.files += %w[extconf.rb lib/b.rb a.c] + + use_ui @ui do + path = Gem::Package.build @spec + + installer = Gem::Installer.at path + installer.install + end + + expected = File.join @spec.full_require_paths.find { |path| + File.exist? File.join path, 'b.rb' + }, 'b.rb' + assert_equal expected, @spec.matches_for_glob('b.rb').first + end + def test_install_extension_and_script @spec.extensions << "extconf.rb" write_file File.join(@tempdir, "extconf.rb") do |io| diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb index 2f8747bc97..9d47f0dea4 100644 --- a/test/rubygems/test_gem_package.rb +++ b/test/rubygems/test_gem_package.rb @@ -141,7 +141,9 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir_p 'lib' open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end - File.symlink('lib/code.rb', 'lib/code_sym.rb') + + # NOTE: 'code.rb' is correct, because it's relative to lib/code_sym.rb + File.symlink('code.rb', 'lib/code_sym.rb') package = Gem::Package.new 'bogus.gem' package.spec = spec @@ -156,12 +158,16 @@ class TestGemPackage < Gem::Package::TarTestCase Gem::Package::TarReader.new tar do |tar_io| tar_io.each_entry do |entry| - (entry.symlink? ? symlinks : files) << entry.full_name + if entry.symlink? + symlinks << { entry.full_name => entry.header.linkname } + else + files << entry.full_name + end end end assert_equal %w[lib/code.rb], files - assert_equal %w[lib/code_sym.rb], symlinks + assert_equal [{'lib/code_sym.rb' => 'lib/code.rb'}], symlinks end def test_build diff --git a/test/rubygems/test_gem_package_tar_writer.rb b/test/rubygems/test_gem_package_tar_writer.rb index 48d480ec53..bed1e3b221 100644 --- a/test/rubygems/test_gem_package_tar_writer.rb +++ b/test/rubygems/test_gem_package_tar_writer.rb @@ -229,6 +229,22 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase assert_equal ["#{'qwer/' * 19}bla", 'a' * 151], @tar_writer.split_name("#{'a' * 151}/#{'qwer/' * 19}bla") + names = [ + ([''] + ['123456789'] * 9 + ['1234567890']).join('/'), # 101 bytes (several pieces) + (['123456789'] * 9 + ['1234567890'] + ['']).join('/'), # 101 bytes (several pieces) + '/' * 99, + '/' * 100, + '/' * 101, + '/' * 102, + ] + names.each do |name| + newname, prefix = @tar_writer.split_name(name) + assert(!(newname.empty?), "split_name() returned empty name") + assert(newname.bytesize <= 100, "split_name() returned name longer than 100 bytes: '#{newname}' for '#{name}'") + assert(prefix.bytesize <= 155, "split_name() returned prefix longer than 155 bytes: '#{prefix}' for '#{name}'") + newname = [prefix, newname].join('/') unless prefix.empty? + assert_equal name, newname + end end def test_split_name_too_long_name @@ -240,6 +256,14 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase @tar_writer.split_name name end assert_includes exception.message, name + + # note, GNU tar 1.28 is unable to handle this case too, + # tested with "tar --format=ustar -cPf /tmp/foo.tartar -- /aaaaaa....a" + name = '/' + 'a' * 100 + exception = assert_raises Gem::Package::TooLongFileName do + @tar_writer.split_name name + end + assert_includes exception.message, name end def test_split_name_too_long_prefix diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb index cf1b27d547..49b6b6656c 100644 --- a/test/rubygems/test_gem_remote_fetcher.rb +++ b/test/rubygems/test_gem_remote_fetcher.rb @@ -81,6 +81,7 @@ gems: # Generated via: # x = OpenSSL::PKey::DH.new(2048) # wait a while... # x.to_s => pem + # x.priv_key.to_s => hex for OpenSSL::BN.new TEST_KEY_DH2048 = OpenSSL::PKey::DH.new <<-_end_of_pem_ -----BEGIN DH PARAMETERS----- MIIBCAKCAQEA3Ze2EHSfYkZLUn557torAmjBgPsqzbodaRaGZtgK1gEU+9nNJaFV @@ -92,6 +93,17 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg== -----END DH PARAMETERS----- _end_of_pem_ + TEST_KEY_DH2048.priv_key = OpenSSL::BN.new("108911488509734781344423639" \ + "5585749502236089033416160524030987005037540379474123441273555416835" \ + "4725688238369352738266590757370603937618499698665047757588998555345" \ + "3446251978586372525530219375408331096098220027413238477359960428372" \ + "0195464393332338164504352015535549496585792320286513563739305843396" \ + "9294344974028713065472959376197728193162272314514335882399554394661" \ + "5306385003430991221886779612878793446851681835397455333989268503748" \ + "7862488679178398716189205737442996155432191656080664090596502674943" \ + "7902481557157485795980326766117882761941455140582265347052939604724" \ + "964857770053363840471912215799994973597613931991572884", 16) + def setup @proxies = %w[https_proxy http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY] @old_proxies = @proxies.map {|k| ENV[k] } diff --git a/test/rubygems/test_gem_security_signer.rb b/test/rubygems/test_gem_security_signer.rb index fe161762e5..685a13949e 100644 --- a/test/rubygems/test_gem_security_signer.rb +++ b/test/rubygems/test_gem_security_signer.rb @@ -205,5 +205,13 @@ c7NM7KZZjj7G++SXjYTEI1PHSA7aFQ/i/+qSUvx+Pg== end end + def test_sign_no_certs + signer = Gem::Security::Signer.new ALTERNATE_KEY, [] + + assert_raises Gem::Security::Exception do + signer.sign 'hello' + end + end + end if defined?(OpenSSL::SSL) -- cgit v1.2.3