aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems/test_gem_uninstaller.rb
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-07 08:44:45 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-07 08:44:45 +0000
commit1df42597d15416357a20bd68700ce1a2d245e8bb (patch)
treef588f28559958e27464866d7b137955bfff04a6f /test/rubygems/test_gem_uninstaller.rb
parentfc634cc092f486adfc911f614b7b4aa2c48c698d (diff)
downloadruby-1df42597d15416357a20bd68700ce1a2d245e8bb.tar.gz
cancel subversion backfire. sorry
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_uninstaller.rb')
-rw-r--r--test/rubygems/test_gem_uninstaller.rb80
1 files changed, 70 insertions, 10 deletions
diff --git a/test/rubygems/test_gem_uninstaller.rb b/test/rubygems/test_gem_uninstaller.rb
index 3925ab1a63..0c08f42d01 100644
--- a/test/rubygems/test_gem_uninstaller.rb
+++ b/test/rubygems/test_gem_uninstaller.rb
@@ -12,19 +12,19 @@ class TestGemUninstaller < Gem::InstallerTestCase
def setup
super
- @user_spec.executables = ["my_exec"]
+ @user_spec.executables = ["executable"]
# HACK util_make_exec
user_bin_dir = File.join Gem.user_dir, 'gems', @user_spec.full_name, 'bin'
FileUtils.mkdir_p user_bin_dir
- exec_path = File.join user_bin_dir, "my_exec"
+ exec_path = File.join user_bin_dir, "executable"
open exec_path, 'w' do |f|
f.puts "#!/usr/bin/ruby"
end
user_bin_dir = File.join Gem.user_dir, 'bin'
FileUtils.mkdir_p user_bin_dir
- exec_path = File.join user_bin_dir, "my_exec"
+ exec_path = File.join user_bin_dir, "executable"
open exec_path, 'w' do |f|
f.puts "#!/usr/bin/ruby"
end
@@ -47,8 +47,8 @@ class TestGemUninstaller < Gem::InstallerTestCase
def test_remove_executables_force_keep
uninstaller = Gem::Uninstaller.new nil, :executables => false
- executable = File.join Gem.user_dir, 'bin', 'my_exec'
- assert File.exist? executable
+ executable = File.join Gem.user_dir, 'bin', 'executable'
+ assert File.exist?(executable), 'executable not written'
use_ui @ui do
uninstaller.remove_executables @user_spec
@@ -62,14 +62,14 @@ class TestGemUninstaller < Gem::InstallerTestCase
def test_remove_executables_force_remove
uninstaller = Gem::Uninstaller.new nil, :executables => true
- executable = File.join Gem.user_dir, 'bin', 'my_exec'
- assert File.exist? executable
+ executable = File.join Gem.user_dir, 'bin', 'executable'
+ assert File.exist?(executable), 'executable not written'
use_ui @ui do
uninstaller.remove_executables @user_spec
end
- assert_equal "Removing my_exec\n", @ui.output
+ assert_equal "Removing executable\n", @ui.output
refute File.exist? executable
end
@@ -81,12 +81,47 @@ class TestGemUninstaller < Gem::InstallerTestCase
uninstaller.remove_executables @user_spec
end
- exec_path = File.join Gem.user_dir, 'bin', 'my_exec'
+ exec_path = File.join Gem.user_dir, 'bin', 'executable'
assert_equal false, File.exist?(exec_path), 'removed exec from bin dir'
- assert_equal "Removing my_exec\n", @ui.output
+ assert_equal "Removing executable\n", @ui.output
end
+ def test_remove_executables_user_format
+ Gem::Installer.exec_format = 'foo-%s-bar'
+
+ uninstaller = Gem::Uninstaller.new nil, :executables => true, :format_executable => true
+
+ use_ui @ui do
+ uninstaller.remove_executables @user_spec
+ end
+
+ exec_path = File.join Gem.user_dir, 'bin', 'foo-executable-bar'
+ assert_equal false, File.exist?(exec_path), 'removed exec from bin dir'
+
+ assert_equal "Removing executable\n", @ui.output
+ ensure
+ Gem::Installer.exec_format = nil
+ end
+
+ def test_remove_executables_user_format_disabled
+ Gem::Installer.exec_format = 'foo-%s-bar'
+
+ uninstaller = Gem::Uninstaller.new nil, :executables => true
+
+ use_ui @ui do
+ uninstaller.remove_executables @user_spec
+ end
+
+ exec_path = File.join Gem.user_dir, 'bin', 'executable'
+ assert_equal false, File.exist?(exec_path), 'removed exec from bin dir'
+
+ assert_equal "Removing executable\n", @ui.output
+ ensure
+ Gem::Installer.exec_format = nil
+ end
+
+
def test_path_ok_eh
uninstaller = Gem::Uninstaller.new nil
@@ -129,6 +164,31 @@ class TestGemUninstaller < Gem::InstallerTestCase
assert_same uninstaller, @post_uninstall_hook_arg
end
+ def test_uninstall_not_ok
+ quick_gem 'z' do |s|
+ s.add_runtime_dependency @spec.name
+ end
+
+ uninstaller = Gem::Uninstaller.new @spec.name
+
+ gem_dir = File.join @gemhome, 'gems', @spec.full_name
+ executable = File.join @gemhome, 'bin', 'executable'
+
+ assert File.exist?(gem_dir), 'gem_dir must exist'
+ assert File.exist?(executable), 'executable must exist'
+
+ ui = Gem::MockGemUi.new "n\n"
+
+ assert_raises Gem::DependencyRemovalException do
+ use_ui ui do
+ uninstaller.uninstall
+ end
+ end
+
+ assert File.exist?(gem_dir), 'gem_dir must still exist'
+ assert File.exist?(executable), 'executable must still exist'
+ end
+
def test_uninstall_user
uninstaller = Gem::Uninstaller.new @user_spec.name, :executables => true,
:user_install => true