1require 'rubygems/test_case' 2require 'rubygems/commands/cleanup_command' 3 4class TestGemCommandsCleanupCommand < Gem::TestCase 5 6 def setup 7 super 8 9 @cmd = Gem::Commands::CleanupCommand.new 10 11 @a_1 = quick_spec 'a', 1 12 @a_2 = quick_spec 'a', 2 13 14 install_gem @a_1 15 install_gem @a_2 16 end 17 18 def test_execute 19 @cmd.options[:args] = %w[a] 20 21 @cmd.execute 22 23 refute_path_exists @a_1.gem_dir 24 end 25 26 def test_execute_all_dependencies 27 @b_1 = quick_spec 'b', 1 do |s| s.add_dependency 'a', '1' end 28 @b_2 = quick_spec 'b', 2 do |s| s.add_dependency 'a', '2' end 29 30 install_gem @b_1 31 install_gem @b_2 32 33 @cmd.options[:args] = [] 34 35 @cmd.execute 36 37 refute_path_exists @a_1.gem_dir 38 refute_path_exists @b_1.gem_dir 39 end 40 41 def test_execute_all 42 gemhome2 = File.join @tempdir, 'gemhome2' 43 44 Gem.ensure_gem_subdirectories gemhome2 45 46 Gem.use_paths @gemhome, gemhome2 47 48 @b_1 = quick_spec 'b', 1 49 @b_2 = quick_spec 'b', 2 50 51 install_gem @b_1 52 install_gem @b_2 53 54 @cmd.options[:args] = [] 55 56 @cmd.execute 57 58 assert_equal @gemhome, Gem.dir, 'GEM_HOME' 59 assert_equal [@gemhome, gemhome2], Gem.path.sort, 'GEM_PATH' 60 61 refute_path_exists @a_1.gem_dir 62 refute_path_exists @b_1.gem_dir 63 end 64 65 def test_execute_all_user 66 @a_1_1 = quick_spec 'a', '1.1' 67 @a_1_1 = install_gem_user @a_1_1 # pick up user install path 68 69 Gem::Specification.dirs = [Gem.dir, Gem.user_dir] 70 71 assert_path_exists @a_1.gem_dir 72 assert_path_exists @a_1_1.gem_dir 73 74 @cmd.options[:args] = %w[a] 75 76 @cmd.execute 77 78 refute_path_exists @a_1.gem_dir 79 refute_path_exists @a_1_1.gem_dir 80 end 81 82 def test_execute_all_user_no_sudo 83 FileUtils.chmod 0555, @gemhome 84 85 @a_1_1 = quick_spec 'a', '1.1' 86 @a_1_1 = install_gem_user @a_1_1 # pick up user install path 87 88 Gem::Specification.dirs = [Gem.dir, Gem.user_dir] 89 90 assert_path_exists @a_1.gem_dir 91 assert_path_exists @a_1_1.gem_dir 92 93 @cmd.options[:args] = %w[a] 94 95 @cmd.execute 96 97 assert_path_exists @a_1.gem_dir 98 refute_path_exists @a_1_1.gem_dir 99 ensure 100 FileUtils.chmod 0755, @gemhome 101 end unless win_platform? 102 103 def test_execute_dry_run 104 @cmd.options[:args] = %w[a] 105 @cmd.options[:dryrun] = true 106 107 @cmd.execute 108 109 assert_path_exists @a_1.gem_dir 110 end 111 112 def test_execute_keeps_older_versions_with_deps 113 @b_1 = quick_spec 'b', 1 114 @b_2 = quick_spec 'b', 2 115 116 @c = quick_spec 'c', 1 do |s| 117 s.add_dependency 'b', '1' 118 end 119 120 install_gem @c 121 install_gem @b_1 122 install_gem @b_2 123 124 @cmd.options[:args] = [] 125 126 @cmd.execute 127 128 assert_path_exists @b_1.gem_dir 129 end 130 131 def test_execute_ignore_default_gem_verbose 132 Gem.configuration.verbose = :really 133 134 @b_1 = quick_spec 'b', 1 135 @b_default = new_default_spec "b", "2" 136 @b_2 = quick_spec 'b', 3 137 138 install_gem @b_1 139 install_default_specs @b_default 140 install_gem @b_2 141 142 @cmd.options[:args] = [] 143 144 use_ui @ui do 145 @cmd.execute 146 end 147 148 assert_match %r%^Skipped default gems: b-2%, @ui.output 149 assert_empty @ui.error 150 end 151end 152 153