diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-04-17 20:50:00 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-04-17 20:50:00 +0000 |
commit | 22d9456b7917fe96fa81fd1d994073312753af8b (patch) | |
tree | be157928ed84f75988ceb82a070797c3482b66a6 /test/rubygems/test_gem_installer.rb | |
parent | 22263729af357eb86e8bc2165a9eaa6f25eec8a6 (diff) | |
download | ruby-22d9456b7917fe96fa81fd1d994073312753af8b.tar.gz |
* lib/rubygems: Update to RubyGems 1.8.22 plus r33517 and r35337 which
were ported to the rubygems git repository.
See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
changes since 1.8.11.
* test/rubygems: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35370 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_installer.rb')
-rw-r--r-- | test/rubygems/test_gem_installer.rb | 212 |
1 files changed, 194 insertions, 18 deletions
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 3c6fb45589..d40fbc93bf 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -2,26 +2,23 @@ require 'rubygems/installer_test_case' class TestGemInstaller < Gem::InstallerTestCase - def setup - super + def util_setup_install + @gemhome = @installer_tmp + Gem.use_paths @installer_tmp - if __name__ !~ /^test_install(_|$)/ then - @gemhome = @installer_tmp - Gem.use_paths @installer_tmp + @spec = Gem::Specification.find_by_name 'a' + @user_spec = Gem::Specification.find_by_name 'b' - @spec = Gem::Specification.find_by_name 'a' - @user_spec = Gem::Specification.find_by_name 'b' - - @installer.spec = @spec - @installer.gem_home = @installer_tmp - @installer.gem_dir = @spec.gem_dir - @user_installer.spec = @user_spec - @user_installer.gem_home = @installer_tmp - end + @installer.spec = @spec + @installer.gem_home = @installer_tmp + @installer.gem_dir = @spec.gem_dir + @user_installer.spec = @user_spec + @user_installer.gem_home = @installer_tmp end - def test_app_script_text + util_setup_install + @spec.version = 2 util_make_exec @spec, '' @@ -38,9 +35,13 @@ require 'rubygems' version = \">= 0\" -if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then - version = $1 - ARGV.shift +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\\A_(.*)_\\z/ + version = $1 + ARGV.shift + end end gem 'a', version @@ -52,6 +53,8 @@ load Gem.bin_path('a', 'executable', version) end def test_build_extensions_none + util_setup_install + use_ui @ui do @installer.build_extensions end @@ -63,6 +66,8 @@ load Gem.bin_path('a', 'executable', version) end def test_build_extensions_extconf_bad + util_setup_install + @spec.extensions << 'extconf.rb' e = assert_raises Gem::Installer::ExtensionBuildError do @@ -86,6 +91,8 @@ load Gem.bin_path('a', 'executable', version) end def test_build_extensions_unsupported + util_setup_install + gem_make_out = File.join @gemhome, 'gems', @spec.full_name, 'gem_make.out' @spec.extensions << nil @@ -107,6 +114,8 @@ load Gem.bin_path('a', 'executable', version) end def test_ensure_dependency + util_setup_install + dep = Gem::Dependency.new 'a', '>= 2' assert @installer.ensure_dependency(@spec, dep) @@ -119,6 +128,8 @@ load Gem.bin_path('a', 'executable', version) end def test_extract_files + util_setup_install + format = Object.new def format.file_entries [[{'size' => 7, 'mode' => 0400, 'path' => 'thefile'}, 'content']] @@ -137,6 +148,8 @@ load Gem.bin_path('a', 'executable', version) end def test_extract_files_bad_dest + util_setup_install + @installer.gem_dir = 'somedir' @installer.format = nil e = assert_raises ArgumentError do @@ -147,6 +160,8 @@ load Gem.bin_path('a', 'executable', version) end def test_extract_files_relative + util_setup_install + format = Object.new def format.file_entries [[{'size' => 10, 'mode' => 0644, 'path' => '../thefile'}, '../thefile']] @@ -166,6 +181,8 @@ load Gem.bin_path('a', 'executable', version) end def test_extract_files_absolute + util_setup_install + format = Object.new def format.file_entries [[{'size' => 8, 'mode' => 0644, 'path' => '/thefile'}, '/thefile']] @@ -183,6 +200,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_bindir + util_setup_install + @installer.wrappers = true @spec.executables = %w[executable] @@ -208,6 +227,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_bindir_with_user_install_warning + util_setup_install + bin_dir = Gem.win_platform? ? File.expand_path(ENV["WINDIR"]) : "/usr/bin" options = { @@ -227,6 +248,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script + util_setup_install + @installer.wrappers = true util_make_exec @installer.gem_dir = util_gem_dir @@ -242,6 +265,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_format + util_setup_install + @installer.format_executable = true @installer.wrappers = true util_make_exec @@ -257,6 +282,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_format_disabled + util_setup_install + @installer.wrappers = true util_make_exec @installer.gem_dir = util_gem_dir @@ -271,6 +298,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_install_dir + util_setup_install + @installer.wrappers = true @spec.executables = %w[executable] @@ -295,6 +324,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_no_execs + util_setup_install + util_execless @installer.wrappers = true @@ -304,6 +335,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_no_perms + util_setup_install + @installer.wrappers = true util_make_exec @@ -323,6 +356,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_no_shebang + util_setup_install + @installer.wrappers = true @spec.executables = %w[executable] @@ -346,6 +381,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_script_wrappers + util_setup_install + @installer.wrappers = true util_make_exec @installer.gem_dir = util_gem_dir @@ -371,6 +408,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink + util_setup_install + return if win_platform? #Windows FS do not support symlinks @installer.wrappers = false @@ -386,6 +425,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink_no_execs + util_setup_install + util_execless @installer.wrappers = false @@ -395,6 +436,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink_no_perms + util_setup_install + @installer.wrappers = false util_make_exec @installer.gem_dir = util_gem_dir @@ -415,6 +458,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink_update_newer + util_setup_install + return if win_platform? #Windows FS do not support symlinks @installer.wrappers = false @@ -446,6 +491,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink_update_older + util_setup_install + return if win_platform? #Windows FS do not support symlinks @installer.wrappers = false @@ -482,6 +529,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink_update_remove_wrapper + util_setup_install + return if win_platform? #Windows FS do not support symlinks @installer.wrappers = true @@ -513,6 +562,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_symlink_win32 + util_setup_install + old_win_platform = Gem.win_platform? Gem.win_platform = true @installer.wrappers = false @@ -537,6 +588,8 @@ load Gem.bin_path('a', 'executable', version) end def test_generate_bin_uses_default_shebang + util_setup_install + return if win_platform? #Windows FS do not support symlinks @installer.wrappers = true @@ -620,6 +673,95 @@ load Gem.bin_path('a', 'executable', version) assert_same @installer, @pre_install_hook_arg end + def test_install_creates_working_binstub + Dir.mkdir util_inst_bindir + util_setup_gem + util_clear_gems + + @installer.wrappers = true + + gemdir = File.join @gemhome, 'gems', @spec.full_name + + @newspec = nil + build_rake_in do + use_ui @ui do + @newspec = @installer.install + end + end + + exe = File.join gemdir, 'bin', 'executable' + + e = assert_raises RuntimeError do + instance_eval File.read(exe) + end + + assert_match(/ran executable/, e.message) + end + + def test_install_creates_binstub_that_understand_version + Dir.mkdir util_inst_bindir + util_setup_gem + util_clear_gems + + @installer.wrappers = true + + @newspec = nil + build_rake_in do + use_ui @ui do + @newspec = @installer.install + end + end + + exe = File.join @gemhome, 'bin', 'executable' + + ARGV.unshift "_3.0_" + + begin + Gem::Specification.reset + + e = assert_raises Gem::LoadError do + instance_eval File.read(exe) + end + ensure + ARGV.shift if ARGV.first == "_3.0_" + end + + assert_match(/\(= 3\.0\)/, e.message) + end + + def test_install_creates_binstub_that_dont_trust_encoding + skip unless "".respond_to?(:force_encoding) + + Dir.mkdir util_inst_bindir + util_setup_gem + util_clear_gems + + @installer.wrappers = true + + @newspec = nil + build_rake_in do + use_ui @ui do + @newspec = @installer.install + end + end + + exe = File.join @gemhome, 'bin', 'executable' + + ARGV.unshift "\xE4pfel".force_encoding("UTF-8") + + begin + Gem::Specification.reset + + e = assert_raises RuntimeError do + instance_eval File.read(exe) + end + ensure + ARGV.shift if ARGV.first == "\xE4pfel" + end + + assert_match(/ran executable/, e.message) + end + def test_install_with_no_prior_files Dir.mkdir util_inst_bindir util_clear_gems @@ -889,6 +1031,8 @@ load Gem.bin_path('a', 'executable', version) end def test_installation_satisfies_dependency_eh + util_setup_install + dep = Gem::Dependency.new 'a', '>= 2' assert @installer.installation_satisfies_dependency?(dep) @@ -897,6 +1041,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang + util_setup_install + util_make_exec @spec, "#!/usr/bin/ruby" shebang = @installer.shebang 'executable' @@ -905,6 +1051,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_arguments + util_setup_install + util_make_exec @spec, "#!/usr/bin/ruby -ws" shebang = @installer.shebang 'executable' @@ -913,6 +1061,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_empty + util_setup_install + util_make_exec @spec, '' shebang = @installer.shebang 'executable' @@ -920,6 +1070,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_env + util_setup_install + util_make_exec @spec, "#!/usr/bin/env ruby" shebang = @installer.shebang 'executable' @@ -928,6 +1080,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_env_arguments + util_setup_install + util_make_exec @spec, "#!/usr/bin/env ruby -ws" shebang = @installer.shebang 'executable' @@ -936,6 +1090,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_env_shebang + util_setup_install + util_make_exec @spec, '' @installer.env_shebang = true @@ -948,6 +1104,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_nested + util_setup_install + util_make_exec @spec, "#!/opt/local/ruby/bin/ruby" shebang = @installer.shebang 'executable' @@ -956,6 +1114,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_nested_arguments + util_setup_install + util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws" shebang = @installer.shebang 'executable' @@ -964,6 +1124,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_version + util_setup_install + util_make_exec @spec, "#!/usr/bin/ruby18" shebang = @installer.shebang 'executable' @@ -972,6 +1134,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_version_arguments + util_setup_install + util_make_exec @spec, "#!/usr/bin/ruby18 -ws" shebang = @installer.shebang 'executable' @@ -980,6 +1144,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_version_env + util_setup_install + util_make_exec @spec, "#!/usr/bin/env ruby18" shebang = @installer.shebang 'executable' @@ -988,6 +1154,8 @@ load Gem.bin_path('a', 'executable', version) end def test_shebang_version_env_arguments + util_setup_install + util_make_exec @spec, "#!/usr/bin/env ruby18 -ws" shebang = @installer.shebang 'executable' @@ -996,6 +1164,8 @@ load Gem.bin_path('a', 'executable', version) end def test_unpack + util_setup_install + util_setup_gem dest = File.join @gemhome, 'gems', @spec.full_name @@ -1007,6 +1177,8 @@ load Gem.bin_path('a', 'executable', version) end def test_write_spec + util_setup_install + spec_dir = File.join @gemhome, 'specifications' spec_file = File.join spec_dir, @spec.spec_name FileUtils.rm spec_file @@ -1022,6 +1194,8 @@ load Gem.bin_path('a', 'executable', version) end def test_write_spec_writes_cached_spec + util_setup_install + spec_dir = File.join @gemhome, 'specifications' spec_file = File.join spec_dir, @spec.spec_name FileUtils.rm spec_file @@ -1041,6 +1215,8 @@ load Gem.bin_path('a', 'executable', version) end def test_dir + util_setup_install + assert_match @installer.dir, %r!/installer/gems/a-2$! end |