summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_uninstaller.rb
diff options
context:
space:
mode:
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