summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_installer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rubygems/test_gem_installer.rb')
-rw-r--r--test/rubygems/test_gem_installer.rb562
1 files changed, 336 insertions, 226 deletions
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 7f325080ec..0e611b60ea 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -22,11 +22,6 @@ class TestGemInstaller < Gem::InstallerTestCase
super
common_installer_setup
- if (self.class.method_defined?(:__name__) ? __name__ : name) =~ /\Atest_install(_|\Z)/
- FileUtils.rm_r @spec.gem_dir
- FileUtils.rm_r @user_spec.gem_dir
- end
-
@config = Gem.configuration
end
@@ -39,6 +34,8 @@ class TestGemInstaller < Gem::InstallerTestCase
end
def test_app_script_text
+ installer = setup_base_installer
+
util_make_exec @spec, ''
expected = <<-EOF
@@ -71,12 +68,14 @@ load Gem.bin_path("a", "executable", version)
end
EOF
- wrapper = @installer.app_script_text 'executable'
+ wrapper = installer.app_script_text 'executable'
assert_equal expected, wrapper
end
def test_check_executable_overwrite
- @installer.generate_bin
+ installer = setup_base_installer
+
+ installer.generate_bin
@spec = Gem::Specification.new do |s|
s.files = ['lib/code.rb']
@@ -88,9 +87,9 @@ end
end
util_make_exec
- @installer.gem_dir = @spec.gem_dir
- @installer.wrappers = true
- @installer.generate_bin
+ installer.gem_dir = @spec.gem_dir
+ installer.wrappers = true
+ installer.generate_bin
installed_exec = File.join util_inst_bindir, 'executable'
assert_path_exists installed_exec
@@ -100,6 +99,8 @@ end
end
def test_check_executable_overwrite_default_bin_dir
+ installer = setup_base_installer
+
if defined?(RUBY_FRAMEWORK_VERSION)
orig_RUBY_FRAMEWORK_VERSION = RUBY_FRAMEWORK_VERSION
Object.send :remove_const, :RUBY_FRAMEWORK_VERSION
@@ -112,7 +113,7 @@ end
ui = Gem::MockGemUi.new "n\n"
use_ui ui do
e = assert_raises Gem::InstallError do
- @installer.generate_bin
+ installer.generate_bin
end
conflicted = File.join @gemhome, 'bin', 'executable'
@@ -130,7 +131,9 @@ end
end
def test_check_executable_overwrite_format_executable
- @installer.generate_bin
+ installer = setup_base_installer
+
+ installer.generate_bin
@spec = Gem::Specification.new do |s|
s.files = ['lib/code.rb']
@@ -153,11 +156,11 @@ gem 'other', version
util_make_exec
Gem::Installer.exec_format = 'foo-%s-bar'
- @installer.gem_dir = @spec.gem_dir
- @installer.wrappers = true
- @installer.format_executable = true
+ installer.gem_dir = @spec.gem_dir
+ installer.wrappers = true
+ installer.format_executable = true
- @installer.generate_bin # should not raise
+ installer.generate_bin # should not raise
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
assert_path_exists installed_exec
@@ -169,13 +172,15 @@ gem 'other', version
end
def test_check_executable_overwrite_other_gem
+ installer = setup_base_installer
+
util_conflict_executable true
ui = Gem::MockGemUi.new "n\n"
use_ui ui do
e = assert_raises Gem::InstallError do
- @installer.generate_bin
+ installer.generate_bin
end
assert_equal '"executable" from a conflicts with installed executable from conflict',
@@ -184,11 +189,13 @@ gem 'other', version
end
def test_check_executable_overwrite_other_gem_force
+ installer = setup_base_installer
+
util_conflict_executable true
- @installer.wrappers = true
- @installer.force = true
+ installer.wrappers = true
+ installer.force = true
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join util_inst_bindir, 'executable'
assert_path_exists installed_exec
@@ -198,10 +205,12 @@ gem 'other', version
end
def test_check_executable_overwrite_other_non_gem
+ installer = setup_base_installer
+
util_conflict_executable false
- @installer.wrappers = true
+ installer.wrappers = true
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join util_inst_bindir, 'executable'
assert_path_exists installed_exec
@@ -211,7 +220,9 @@ gem 'other', version
end unless Gem.win_platform?
def test_check_that_user_bin_dir_is_in_path
- bin_dir = @installer.bin_dir
+ installer = setup_base_installer
+
+ bin_dir = installer.bin_dir
if Gem.win_platform?
bin_dir = bin_dir.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
@@ -221,7 +232,7 @@ gem 'other', version
ENV['PATH'], [ENV['PATH'], bin_dir].join(File::PATH_SEPARATOR)
use_ui @ui do
- @installer.check_that_user_bin_dir_is_in_path
+ installer.check_that_user_bin_dir_is_in_path
end
assert_empty @ui.error
@@ -235,10 +246,11 @@ gem 'other', version
orig_PATH, ENV['PATH'] =
ENV['PATH'], [ENV['PATH'], '~/bin'].join(File::PATH_SEPARATOR)
- @installer.bin_dir.replace File.join @userhome, 'bin'
+ installer = setup_base_installer
+ installer.bin_dir.replace File.join @userhome, 'bin'
use_ui @ui do
- @installer.check_that_user_bin_dir_is_in_path
+ installer.check_that_user_bin_dir_is_in_path
end
assert_empty @ui.error
@@ -247,11 +259,13 @@ gem 'other', version
end
def test_check_that_user_bin_dir_is_in_path_not_in_path
+ installer = setup_base_installer
+
use_ui @ui do
- @installer.check_that_user_bin_dir_is_in_path
+ installer.check_that_user_bin_dir_is_in_path
end
- expected = @installer.bin_dir
+ expected = installer.bin_dir
if Gem.win_platform?
expected = expected.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
@@ -261,14 +275,16 @@ gem 'other', version
end
def test_ensure_dependency
+ installer = setup_base_installer
+
util_spec 'a'
dep = Gem::Dependency.new 'a', '>= 2'
- assert @installer.ensure_dependency(@spec, dep)
+ assert installer.ensure_dependency(@spec, dep)
dep = Gem::Dependency.new 'b', '> 2'
e = assert_raises Gem::InstallError do
- @installer.ensure_dependency @spec, dep
+ installer.ensure_dependency @spec, dep
end
assert_equal 'a requires b (> 2)', e.message
@@ -305,26 +321,30 @@ gem 'other', version
end
def test_extract_files
- @installer.extract_files
+ installer = setup_base_installer
+
+ installer.extract_files
assert_path_exists File.join @spec.gem_dir, 'bin/executable'
end
def test_generate_bin_bindir
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
@spec.executables = %w[executable]
@spec.bindir = 'bin'
- exec_file = @installer.formatted_program_filename 'executable'
+ exec_file = installer.formatted_program_filename 'executable'
exec_path = File.join @spec.gem_dir, exec_file
File.open exec_path, 'w' do |f|
f.puts '#!/usr/bin/ruby'
end
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
assert_directory_exists util_inst_bindir
installed_exec = File.join(util_inst_bindir, 'executable')
@@ -362,11 +382,13 @@ gem 'other', version
end
def test_generate_bin_script
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
assert_directory_exists util_inst_bindir
installed_exec = File.join util_inst_bindir, 'executable'
assert_path_exists installed_exec
@@ -377,13 +399,15 @@ gem 'other', version
end
def test_generate_bin_script_format
- @installer.format_executable = true
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.format_executable = true
+ installer.wrappers = true
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
Gem::Installer.exec_format = 'foo-%s-bar'
- @installer.generate_bin
+ installer.generate_bin
assert_directory_exists util_inst_bindir
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
assert_path_exists installed_exec
@@ -392,12 +416,14 @@ gem 'other', version
end
def test_generate_bin_script_format_disabled
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
Gem::Installer.exec_format = 'foo-%s-bar'
- @installer.generate_bin
+ installer.generate_bin
assert_directory_exists util_inst_bindir
installed_exec = File.join util_inst_bindir, 'executable'
assert_path_exists installed_exec
@@ -406,7 +432,9 @@ gem 'other', version
end
def test_generate_bin_script_install_dir
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
gem_dir = File.join("#{@gemhome}2", "gems", @spec.full_name)
gem_bindir = File.join gem_dir, 'bin'
@@ -415,11 +443,11 @@ gem 'other', version
f.puts "#!/bin/ruby"
end
- @installer.gem_home = "#{@gemhome}2"
- @installer.gem_dir = gem_dir
- @installer.bin_dir = File.join "#{@gemhome}2", 'bin'
+ installer.gem_home = "#{@gemhome}2"
+ installer.gem_dir = gem_dir
+ installer.bin_dir = File.join "#{@gemhome}2", 'bin'
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join("#{@gemhome}2", "bin", 'executable')
assert_path_exists installed_exec
@@ -430,16 +458,20 @@ gem 'other', version
end
def test_generate_bin_script_no_execs
- util_execless
+ installer = setup_base_installer
- @installer.wrappers = true
- @installer.generate_bin
+ installer = util_execless
+
+ installer.wrappers = true
+ installer.generate_bin
refute_path_exists util_inst_bindir, 'bin dir was created when not needed'
end
def test_generate_bin_script_no_perms
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
util_make_exec
Dir.mkdir util_inst_bindir
@@ -452,7 +484,7 @@ gem 'other', version
FileUtils.chmod 0000, util_inst_bindir
assert_raises Gem::FilePermissionError do
- @installer.generate_bin
+ installer.generate_bin
end
end
ensure
@@ -460,7 +492,9 @@ gem 'other', version
end
def test_generate_bin_script_no_shebang
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
@spec.executables = %w[executable]
gem_dir = File.join @gemhome, 'gems', @spec.full_name
@@ -470,7 +504,7 @@ gem 'other', version
f.puts "blah blah blah"
end
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join @gemhome, 'bin', 'executable'
assert_path_exists installed_exec
@@ -483,9 +517,11 @@ gem 'other', version
end
def test_generate_bin_script_wrappers
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
installed_exec = File.join(util_inst_bindir, 'executable')
real_exec = File.join @spec.gem_dir, 'bin', 'executable'
@@ -496,7 +532,7 @@ gem 'other', version
FileUtils.ln_s real_exec, installed_exec
end
- @installer.generate_bin
+ installer.generate_bin
assert_directory_exists util_inst_bindir
assert_path_exists installed_exec
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -510,11 +546,13 @@ gem 'other', version
def test_generate_bin_symlink
return if win_platform? #Windows FS do not support symlinks
- @installer.wrappers = false
+ installer = setup_base_installer
+
+ installer.wrappers = false
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
assert_directory_exists util_inst_bindir
installed_exec = File.join util_inst_bindir, 'executable'
assert_equal true, File.symlink?(installed_exec)
@@ -523,18 +561,22 @@ gem 'other', version
end
def test_generate_bin_symlink_no_execs
- util_execless
+ installer = setup_base_installer
+
+ installer = util_execless
- @installer.wrappers = false
- @installer.generate_bin
+ installer.wrappers = false
+ installer.generate_bin
refute_path_exists util_inst_bindir
end
def test_generate_bin_symlink_no_perms
- @installer.wrappers = false
+ installer = setup_base_installer
+
+ installer.wrappers = false
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
Dir.mkdir util_inst_bindir
@@ -546,7 +588,7 @@ gem 'other', version
FileUtils.chmod 0000, util_inst_bindir
assert_raises Gem::FilePermissionError do
- @installer.generate_bin
+ installer.generate_bin
end
end
ensure
@@ -556,11 +598,13 @@ gem 'other', version
def test_generate_bin_symlink_update_newer
return if win_platform? #Windows FS do not support symlinks
- @installer.wrappers = false
+ installer = setup_base_installer
+
+ installer.wrappers = false
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join(util_inst_bindir, 'executable')
assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
File.readlink(installed_exec))
@@ -575,8 +619,8 @@ gem 'other', version
end
util_make_exec
- @installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.gem_dir = @spec.gem_dir
+ installer.generate_bin
installed_exec = File.join(util_inst_bindir, 'executable')
assert_equal(@spec.bin_file('executable'),
File.readlink(installed_exec),
@@ -586,11 +630,13 @@ gem 'other', version
def test_generate_bin_symlink_update_older
return if !symlink_supported?
- @installer.wrappers = false
+ installer = setup_base_installer
+
+ installer.wrappers = false
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join(util_inst_bindir, 'executable')
assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
File.readlink(installed_exec))
@@ -607,10 +653,10 @@ gem 'other', version
util_make_exec
one = @spec.dup
one.version = 1
- @installer = Gem::Installer.for_spec spec
- @installer.gem_dir = one.gem_dir
+ installer = Gem::Installer.for_spec spec
+ installer.gem_dir = one.gem_dir
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join util_inst_bindir, 'executable'
expected = File.join @spec.gem_dir, 'bin', 'executable'
@@ -622,11 +668,13 @@ gem 'other', version
def test_generate_bin_symlink_update_remove_wrapper
return if !symlink_supported?
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join util_inst_bindir, 'executable'
assert_path_exists installed_exec
@@ -642,10 +690,10 @@ gem 'other', version
util_make_exec
util_installer @spec, @gemhome
- @installer.wrappers = false
- @installer.gem_dir = @spec.gem_dir
+ installer.wrappers = false
+ installer.gem_dir = @spec.gem_dir
- @installer.generate_bin
+ installer.generate_bin
installed_exec = File.join util_inst_bindir, 'executable'
assert_equal(@spec.bin_file('executable'),
@@ -659,12 +707,15 @@ gem 'other', version
old_alt_separator = File::ALT_SEPARATOR
File.__send__(:remove_const, :ALT_SEPARATOR)
File.const_set(:ALT_SEPARATOR, '\\')
- @installer.wrappers = false
+
+ installer = setup_base_installer
+
+ installer.wrappers = false
util_make_exec
- @installer.gem_dir = @spec.gem_dir
+ installer.gem_dir = @spec.gem_dir
use_ui @ui do
- @installer.generate_bin
+ installer.generate_bin
end
assert_directory_exists util_inst_bindir
@@ -690,10 +741,12 @@ gem 'other', version
def test_generate_bin_uses_default_shebang
return if !symlink_supported?
- @installer.wrappers = true
+ installer = setup_base_installer
+
+ installer.wrappers = true
util_make_exec
- @installer.generate_bin
+ installer.generate_bin
default_shebang = Gem.ruby
shebang_line = open("#{@gemhome}/bin/executable") { |f| f.readlines.first }
@@ -719,6 +772,8 @@ gem 'other', version
end
def test_initialize_user_install
+ @gem = setup_base_gem
+
installer = Gem::Installer.at @gem, :user_install => true
assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
@@ -727,6 +782,8 @@ gem 'other', version
end
def test_initialize_user_install_bin_dir
+ @gem = setup_base_gem
+
installer =
Gem::Installer.at @gem, :user_install => true, :bin_dir => @tempdir
@@ -736,9 +793,7 @@ gem 'other', version
end
def test_install
- Dir.mkdir util_inst_bindir
- util_setup_gem
- util_clear_gems
+ installer = util_setup_installer
gemdir = File.join @gemhome, 'gems', @spec.full_name
cache_file = File.join @gemhome, 'cache', @spec.file_name
@@ -746,13 +801,13 @@ gem 'other', version
rakefile = File.join gemdir, 'ext', 'a', 'Rakefile'
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
- Gem.pre_install do |installer|
+ Gem.pre_install do
refute_path_exists cache_file, 'cache file must not exist yet'
refute_path_exists spec_file, 'spec file must not exist yet'
true
end
- Gem.post_build do |installer|
+ Gem.post_build do
assert_path_exists gemdir, 'gem install dir must exist'
assert_path_exists rakefile, 'gem executable must exist'
refute_path_exists stub_exe, 'gem executable must not exist'
@@ -760,7 +815,7 @@ gem 'other', version
true
end
- Gem.post_install do |installer|
+ Gem.post_install do
assert_path_exists cache_file, 'cache file must exist'
assert_path_exists spec_file, 'spec file must exist'
end
@@ -768,7 +823,7 @@ gem 'other', version
@newspec = nil
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
@@ -786,29 +841,25 @@ gem 'other', version
assert_path_exists rakefile
- spec_file = File.join(@gemhome, 'specifications', @spec.spec_name)
-
assert_equal spec_file, @newspec.loaded_from
assert_path_exists spec_file
- assert_same @installer, @post_build_hook_arg
- assert_same @installer, @post_install_hook_arg
- assert_same @installer, @pre_install_hook_arg
+ assert_same installer, @post_build_hook_arg
+ assert_same installer, @post_install_hook_arg
+ 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 = util_setup_installer
- @installer.wrappers = true
+ installer.wrappers = true
gemdir = File.join @gemhome, 'gems', @spec.full_name
@newspec = nil
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
@@ -822,11 +873,10 @@ gem 'other', version
end
def test_conflicting_binstubs
- Dir.mkdir util_inst_bindir
- util_clear_gems
+ @gem = setup_base_gem
# build old version that has a bin file
- util_setup_gem do |spec|
+ installer = util_setup_gem do |spec|
File.open File.join('bin', 'executable'), 'w' do |f|
f.puts "require 'code'"
end
@@ -835,17 +885,17 @@ gem 'other', version
end
end
- @installer.wrappers = true
+ installer.wrappers = true
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
- old_bin_file = File.join @installer.bin_dir, 'executable'
+ old_bin_file = File.join installer.bin_dir, 'executable'
# build new version that doesn't have a bin file
- util_setup_gem do |spec|
+ installer = util_setup_gem do |spec|
FileUtils.rm File.join('bin', 'executable')
spec.files.delete File.join('bin', 'executable')
spec.executables.delete 'executable'
@@ -857,7 +907,7 @@ gem 'other', version
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
@@ -871,16 +921,14 @@ gem 'other', version
end
def test_install_creates_binstub_that_understand_version
- Dir.mkdir util_inst_bindir
- util_setup_gem
- util_clear_gems
+ installer = util_setup_installer
- @installer.wrappers = true
+ installer.wrappers = true
@newspec = nil
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
@@ -902,23 +950,21 @@ gem 'other', version
end
def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
- Dir.mkdir util_inst_bindir
-
install_default_gems new_default_spec('default', '2')
- util_setup_gem do |spec|
+ installer = util_setup_installer do |spec|
spec.name = 'default'
spec.version = '2'
end
util_clear_gems
- @installer.wrappers = true
+ installer.wrappers = true
@newspec = nil
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
@@ -932,16 +978,14 @@ gem 'other', version
end
def test_install_creates_binstub_that_dont_trust_encoding
- Dir.mkdir util_inst_bindir
- util_setup_gem
- util_clear_gems
+ installer = util_setup_installer
- @installer.wrappers = true
+ installer.wrappers = true
@newspec = nil
build_rake_in do
use_ui @ui do
- @newspec = @installer.install
+ @newspec = installer.install
end
end
@@ -964,20 +1008,19 @@ gem 'other', version
end
def test_install_with_no_prior_files
- Dir.mkdir util_inst_bindir
- util_clear_gems
+ installer = util_setup_installer
- util_setup_gem
build_rake_in do
use_ui @ui do
- assert_equal @spec, @installer.install
+ assert_equal @spec, installer.install
end
end
gemdir = File.join(@gemhome, 'gems', @spec.full_name)
assert_path_exists File.join gemdir, 'lib', 'code.rb'
- util_setup_gem
+ installer = util_setup_installer
+
# Morph spec to have lib/other.rb instead of code.rb and recreate
@spec.files = File.join('lib', 'other.rb')
Dir.chdir @tempdir do
@@ -990,10 +1033,10 @@ gem 'other', version
Gem::Package.build @spec
end
end
- @installer = Gem::Installer.at @gem
+ installer = Gem::Installer.at @gem
build_rake_in do
use_ui @ui do
- assert_equal @spec, @installer.install
+ assert_equal @spec, installer.install
end
end
@@ -1013,12 +1056,14 @@ gem 'other', version
end
def test_install_missing_dirs
+ installer = setup_base_installer
+
FileUtils.rm_f File.join(Gem.dir, 'cache')
FileUtils.rm_f File.join(Gem.dir, 'doc')
FileUtils.rm_f File.join(Gem.dir, 'specifications')
use_ui @ui do
- @installer.install
+ installer.install
end
assert_directory_exists File.join(Gem.dir, 'cache')
@@ -1030,7 +1075,7 @@ gem 'other', version
end
def test_install_post_build_false
- util_clear_gems
+ installer = setup_base_installer
Gem.post_build do
false
@@ -1038,7 +1083,7 @@ gem 'other', version
use_ui @ui do
e = assert_raises Gem::InstallError do
- @installer.install
+ installer.install
end
location = "#{__FILE__}:#{__LINE__ - 9}"
@@ -1054,14 +1099,14 @@ gem 'other', version
end
def test_install_post_build_nil
- util_clear_gems
+ installer = setup_base_installer
Gem.post_build do
nil
end
use_ui @ui do
- @installer.install
+ installer.install
end
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
@@ -1072,7 +1117,7 @@ gem 'other', version
end
def test_install_pre_install_false
- util_clear_gems
+ installer = setup_base_installer
Gem.pre_install do
false
@@ -1080,7 +1125,7 @@ gem 'other', version
use_ui @ui do
e = assert_raises Gem::InstallError do
- @installer.install
+ installer.install
end
location = "#{__FILE__}:#{__LINE__ - 9}"
@@ -1093,14 +1138,14 @@ gem 'other', version
end
def test_install_pre_install_nil
- util_clear_gems
+ installer = setup_base_installer
Gem.pre_install do
nil
end
use_ui @ui do
- @installer.install
+ installer.install
end
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
@@ -1108,26 +1153,28 @@ gem 'other', version
end
def test_install_with_message
+ @spec = setup_base_spec
@spec.post_install_message = 'I am a shiny gem!'
use_ui @ui do
path = Gem::Package.build @spec
- @installer = Gem::Installer.at path
- @installer.install
+ installer = Gem::Installer.at path
+ installer.install
end
assert_match %r|I am a shiny gem!|, @ui.output
end
def test_install_with_skipped_message
+ @spec = setup_base_spec
@spec.post_install_message = 'I am a shiny gem!'
use_ui @ui do
path = Gem::Package.build @spec
- @installer = Gem::Installer.at path, :post_install_message => false
- @installer.install
+ installer = Gem::Installer.at path, :post_install_message => false
+ installer.install
end
refute_match %r|I am a shiny gem!|, @ui.output
@@ -1136,6 +1183,7 @@ gem 'other', version
def test_install_extension_dir
gemhome2 = "#{@gemhome}2"
+ @spec = setup_base_spec
@spec.extensions << "extconf.rb"
write_file File.join(@tempdir, "extconf.rb") do |io|
io.write <<-RUBY
@@ -1159,6 +1207,8 @@ gem 'other', version
end
def test_install_extension_dir_is_removed_on_reinstall
+ @spec = setup_base_spec
+
@spec.extensions << "extconf.rb"
write_file File.join(@tempdir, "extconf.rb") do |io|
io.write <<-RUBY
@@ -1194,6 +1244,7 @@ gem 'other', version
end
def test_install_user_extension_dir
+ @spec = setup_base_spec
@spec.extensions << "extconf.rb"
write_file File.join(@tempdir, "extconf.rb") do |io|
io.write <<-RUBY
@@ -1223,6 +1274,9 @@ gem 'other', version
end
def test_find_lib_file_after_install
+ skip "extensions don't quite work on jruby" if Gem.java_platform?
+
+ @spec = setup_base_spec
@spec.extensions << "extconf.rb"
write_file File.join(@tempdir, "extconf.rb") do |io|
io.write <<-RUBY
@@ -1266,6 +1320,9 @@ gem 'other', version
end
def test_install_extension_and_script
+ skip "Makefile creation crashes on jruby" if Gem.java_platform?
+
+ @spec = setup_base_spec
@spec.extensions << "extconf.rb"
write_file File.join(@tempdir, "extconf.rb") do |io|
io.write <<-RUBY
@@ -1296,14 +1353,17 @@ gem 'other', version
use_ui @ui do
path = Gem::Package.build @spec
- @installer = Gem::Installer.at path
- @installer.install
+ installer = Gem::Installer.at path
+ installer.install
end
assert_path_exists File.join @spec.gem_dir, rb
assert_path_exists File.join @spec.gem_dir, rb2
end
def test_install_extension_flat
+ skip "extensions don't quite work on jruby" if Gem.java_platform?
+
+ @spec = setup_base_spec
@spec.require_paths = ["."]
@spec.extensions << "extconf.rb"
@@ -1330,8 +1390,8 @@ gem 'other', version
use_ui @ui do
path = Gem::Package.build @spec
- @installer = Gem::Installer.at path
- @installer.install
+ installer = Gem::Installer.at path
+ installer.install
end
assert_path_exists so
rescue
@@ -1350,49 +1410,56 @@ gem 'other', version
end
def test_installation_satisfies_dependency_eh
+ installer = setup_base_installer
+
util_spec 'a'
dep = Gem::Dependency.new 'a', '>= 2'
- assert @installer.installation_satisfies_dependency?(dep)
+ assert installer.installation_satisfies_dependency?(dep)
dep = Gem::Dependency.new 'a', '> 2'
- refute @installer.installation_satisfies_dependency?(dep)
+ refute installer.installation_satisfies_dependency?(dep)
end
def test_installation_satisfies_dependency_eh_development
- @installer.options[:development] = true
- @installer.options[:dev_shallow] = true
+ installer = setup_base_installer
+ installer.options[:development] = true
+ installer.options[:dev_shallow] = true
util_spec 'a'
dep = Gem::Dependency.new 'a', :development
- assert @installer.installation_satisfies_dependency?(dep)
+ assert installer.installation_satisfies_dependency?(dep)
end
def test_pre_install_checks_dependencies
+ installer = setup_base_installer
@spec.add_dependency 'b', '> 5'
- util_setup_gem
+ installer = util_setup_gem
use_ui @ui do
assert_raises Gem::InstallError do
- @installer.install
+ installer.install
end
end
end
def test_pre_install_checks_dependencies_ignore
+ installer = util_setup_installer
@spec.add_dependency 'b', '> 5'
- @installer.ignore_dependencies = true
+ installer.ignore_dependencies = true
build_rake_in do
use_ui @ui do
- assert @installer.pre_install_checks
+ assert installer.pre_install_checks
end
end
end
def test_pre_install_checks_dependencies_install_dir
gemhome2 = "#{@gemhome}2"
+
+ @gem = setup_base_gem
@spec.add_dependency 'd'
quick_gem 'd', 2
@@ -1455,9 +1522,9 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
+ installer = Gem::Installer.at gem
e = assert_raises Gem::RuntimeRequirementNotMetError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
rgv = Gem::VERSION
assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
@@ -1477,9 +1544,9 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
+ installer = Gem::Installer.at gem
e = assert_raises Gem::InstallError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
assert_equal '#<Gem::Specification name=../malicious version=1> has an invalid name', e.message
end
@@ -1497,9 +1564,9 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
+ installer = Gem::Installer.at gem
e = assert_raises Gem::InstallError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
assert_equal "#<Gem::Specification name=malicious\n::Object.const_set(:FROM_EVAL, true)# version=1> has an invalid name", e.message
end
@@ -1519,9 +1586,9 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
+ installer = Gem::Installer.at gem
e = assert_raises Gem::InstallError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid require_paths", e.message
end
@@ -1542,9 +1609,9 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
+ installer = Gem::Installer.at gem
e = assert_raises Gem::InstallError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid extensions", e.message
end
@@ -1563,9 +1630,9 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
+ installer = Gem::Installer.at gem
e = assert_raises Gem::InstallError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid specification_version", e.message
end
@@ -1584,75 +1651,90 @@ gem 'other', version
gem = File.join(@gemhome, 'cache', spec.file_name)
use_ui @ui do
- @installer = Gem::Installer.at gem
- @installer.ignore_dependencies = true
+ installer = Gem::Installer.at gem
+ installer.ignore_dependencies = true
e = assert_raises Gem::InstallError do
- @installer.pre_install_checks
+ installer.pre_install_checks
end
assert_equal "#<Gem::Specification name=malicious version=1> has an invalid dependencies", e.message
end
end
def test_shebang
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/ruby"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby}", shebang
end
def test_process_options
- assert_nil @installer.build_root
- assert_equal File.join(@gemhome, 'bin'), @installer.bin_dir
- assert_equal @gemhome, @installer.gem_home
+ installer = setup_base_installer
+
+ assert_nil installer.build_root
+ assert_equal File.join(@gemhome, 'bin'), installer.bin_dir
+ assert_equal @gemhome, installer.gem_home
end
def test_process_options_build_root
build_root = File.join @tempdir, 'build_root'
- @installer = Gem::Installer.at @gem, :build_root => build_root
+ @gem = setup_base_gem
+ installer = Gem::Installer.at @gem, :build_root => build_root
- assert_equal Pathname(build_root), @installer.build_root
- assert_equal File.join(build_root, @gemhome, 'bin'), @installer.bin_dir
- assert_equal File.join(build_root, @gemhome), @installer.gem_home
+ assert_equal Pathname(build_root), installer.build_root
+ assert_equal File.join(build_root, @gemhome, 'bin'), installer.bin_dir
+ assert_equal File.join(build_root, @gemhome), installer.gem_home
end
def test_shebang_arguments
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/ruby -ws"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby} -ws", shebang
end
def test_shebang_empty
+ installer = setup_base_installer
+
util_make_exec @spec, ''
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby}", shebang
end
def test_shebang_env
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/env ruby"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby}", shebang
end
def test_shebang_env_arguments
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/env ruby -ws"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby} -ws", shebang
end
def test_shebang_env_shebang
+ installer = setup_base_installer
+
util_make_exec @spec, ''
- @installer.env_shebang = true
+ installer.env_shebang = true
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
env_shebang = "/usr/bin/env" unless Gem.win_platform?
@@ -1661,54 +1743,68 @@ gem 'other', version
end
def test_shebang_nested
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby}", shebang
end
def test_shebang_nested_arguments
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby} -ws", shebang
end
def test_shebang_version
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/ruby18"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby}", shebang
end
def test_shebang_version_arguments
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby} -ws", shebang
end
def test_shebang_version_env
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/env ruby18"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby}", shebang
end
def test_shebang_version_env_arguments
+ installer = setup_base_installer
+
util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!#{Gem.ruby} -ws", shebang
end
def test_shebang_custom
+ installer = setup_base_installer
+
conf = Gem::ConfigFile.new []
conf[:custom_shebang] = 'test'
@@ -1716,12 +1812,14 @@ gem 'other', version
util_make_exec @spec, "#!/usr/bin/ruby"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!test", shebang
end
def test_shebang_custom_with_expands
+ installer = setup_base_installer
+
bin_env = win_platform? ? '' : '/usr/bin/env'
conf = Gem::ConfigFile.new []
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
@@ -1730,12 +1828,14 @@ gem 'other', version
util_make_exec @spec, "#!/usr/bin/ruby"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} 3 executable 4 a", shebang
end
def test_shebang_custom_with_expands_and_arguments
+ installer = setup_base_installer
+
bin_env = win_platform? ? '' : '/usr/bin/env'
conf = Gem::ConfigFile.new []
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
@@ -1744,18 +1844,18 @@ gem 'other', version
util_make_exec @spec, "#!/usr/bin/ruby -ws"
- shebang = @installer.shebang 'executable'
+ shebang = installer.shebang 'executable'
assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} -ws 3 executable", shebang
end
def test_unpack
- util_setup_gem
+ installer = util_setup_installer
dest = File.join @gemhome, 'gems', @spec.full_name
Gem::Deprecate.skip_during do
- @installer.unpack dest
+ installer.unpack dest
end
assert_path_exists File.join dest, 'lib', 'code.rb'
@@ -1763,13 +1863,15 @@ gem 'other', version
end
def test_write_build_info_file
+ installer = setup_base_installer
+
refute_path_exists @spec.build_info_file
- @installer.build_args = %w[
+ installer.build_args = %w[
--with-libyaml-dir /usr/local/Cellar/libyaml/0.1.4
]
- @installer.write_build_info_file
+ installer.write_build_info_file
assert_path_exists @spec.build_info_file
@@ -1779,14 +1881,17 @@ gem 'other', version
end
def test_write_build_info_file_empty
+ installer = setup_base_installer
+
refute_path_exists @spec.build_info_file
- @installer.write_build_info_file
+ installer.write_build_info_file
refute_path_exists @spec.build_info_file
end
def test_write_build_info_file_install_dir
+ @gem = setup_base_gem
installer = Gem::Installer.at @gem, :install_dir => "#{@gemhome}2"
installer.build_args = %w[
@@ -1801,6 +1906,7 @@ gem 'other', version
end
def test_write_cache_file
+ @gem = setup_base_gem
cache_file = File.join @gemhome, 'cache', @spec.file_name
gem = File.join @gemhome, @spec.file_name
@@ -1816,13 +1922,14 @@ gem 'other', version
end
def test_write_spec
+ @spec = setup_base_spec
FileUtils.rm @spec.spec_file
refute_path_exists @spec.spec_file
- @installer = Gem::Installer.for_spec @spec
- @installer.gem_home = @gemhome
+ installer = Gem::Installer.for_spec @spec
+ installer.gem_home = @gemhome
- @installer.write_spec
+ installer.write_spec
assert_path_exists @spec.spec_file
@@ -1834,15 +1941,16 @@ gem 'other', version
end
def test_write_spec_writes_cached_spec
+ @spec = setup_base_spec
FileUtils.rm @spec.spec_file
refute_path_exists @spec.spec_file
@spec.files = %w[a.rb b.rb c.rb]
- @installer = Gem::Installer.for_spec @spec
- @installer.gem_home = @gemhome
+ installer = Gem::Installer.for_spec @spec
+ installer.gem_home = @gemhome
- @installer.write_spec
+ installer.write_spec
# cached specs have no file manifest:
@spec.files = []
@@ -1851,7 +1959,9 @@ gem 'other', version
end
def test_dir
- assert_match %r!/gemhome/gems/a-2$!, @installer.dir
+ installer = setup_base_installer
+
+ assert_match %r!/gemhome/gems/a-2$!, installer.dir
end
def test_default_gem_loaded_from
@@ -1862,14 +1972,16 @@ gem 'other', version
end
def test_default_gem_without_wrappers
+ installer = setup_base_installer
+
FileUtils.rm_f File.join(Gem.dir, 'specifications')
- @installer.wrappers = false
- @installer.options[:install_as_default] = true
- @installer.gem_dir = @spec.gem_dir
+ installer.wrappers = false
+ installer.options[:install_as_default] = true
+ installer.gem_dir = @spec.gem_dir
use_ui @ui do
- @installer.install
+ installer.install
end
assert_directory_exists File.join(@spec.gem_dir, 'bin')
@@ -1893,14 +2005,14 @@ gem 'other', version
end
def test_default_gem_with_wrappers
- FileUtils.rm_f File.join(Gem.dir, 'specifications')
+ installer = setup_base_installer
- @installer.wrappers = true
- @installer.options[:install_as_default] = true
- @installer.gem_dir = @spec.gem_dir
+ installer.wrappers = true
+ installer.options[:install_as_default] = true
+ installer.gem_dir = @spec.gem_dir
use_ui @ui do
- @installer.install
+ installer.install
end
assert_directory_exists util_inst_bindir
@@ -1913,8 +2025,6 @@ gem 'other', version
end
def test_default_gem_with_exe_as_bindir
- FileUtils.rm_f File.join(Gem.dir, 'specifications')
-
@spec = quick_gem 'c' do |spec|
util_make_exec spec, '#!/usr/bin/ruby', 'exe'
end
@@ -1958,7 +2068,7 @@ gem 'other', version
@spec = util_spec 'z'
util_build_gem @spec
- @installer = util_installer @spec, @gemhome
+ util_installer @spec, @gemhome
end
def util_conflict_executable(wrappers)