1require 'rubygems/test_case' 2require 'rubygems/commands/contents_command' 3 4class TestGemCommandsContentsCommand < Gem::TestCase 5 6 def setup 7 super 8 9 @cmd = Gem::Commands::ContentsCommand.new 10 end 11 12 def gem name 13 spec = quick_gem name do |gem| 14 gem.files = %W[lib/#{name}.rb Rakefile] 15 end 16 write_file File.join(*%W[gems #{spec.full_name} lib #{name}.rb]) 17 write_file File.join(*%W[gems #{spec.full_name} Rakefile]) 18 end 19 20 def test_execute 21 @cmd.options[:args] = %w[foo] 22 23 gem 'foo' 24 25 use_ui @ui do 26 @cmd.execute 27 end 28 29 assert_match %r|lib/foo\.rb|, @ui.output 30 assert_match %r|Rakefile|, @ui.output 31 assert_equal "", @ui.error 32 end 33 34 def test_execute_all 35 @cmd.options[:all] = true 36 37 gem 'foo' 38 gem 'bar' 39 40 use_ui @ui do 41 @cmd.execute 42 end 43 44 assert_match %r|lib/foo\.rb|, @ui.output 45 assert_match %r|lib/bar\.rb|, @ui.output 46 assert_match %r|Rakefile|, @ui.output 47 assert_equal "", @ui.error 48 end 49 50 def test_execute_bad_gem 51 @cmd.options[:args] = %w[foo] 52 53 assert_raises Gem::MockGemUi::TermError do 54 use_ui @ui do 55 @cmd.execute 56 end 57 end 58 59 assert_match %r|Unable to find gem 'foo' in default gem paths|, @ui.output 60 assert_match %r|Directories searched:|, @ui.output 61 assert_equal "", @ui.error 62 end 63 64 def test_execute_exact_match 65 @cmd.options[:args] = %w[foo] 66 gem 'foo' 67 gem 'bar' 68 69 use_ui @ui do 70 @cmd.execute 71 end 72 73 assert_match %r|lib/foo\.rb|, @ui.output 74 assert_match %r|Rakefile|, @ui.output 75 assert_equal "", @ui.error 76 end 77 78 def test_execute_lib_only 79 @cmd.options[:args] = %w[foo] 80 @cmd.options[:lib_only] = true 81 82 gem 'foo' 83 84 use_ui @ui do 85 @cmd.execute 86 end 87 88 assert_match %r|lib/foo\.rb|, @ui.output 89 refute_match %r|Rakefile|, @ui.output 90 91 assert_equal "", @ui.error 92 end 93 94 def test_execute_multiple 95 @cmd.options[:args] = %w[foo bar] 96 97 gem 'foo' 98 gem 'bar' 99 100 use_ui @ui do 101 @cmd.execute 102 end 103 104 assert_match %r|lib/foo\.rb|, @ui.output 105 assert_match %r|lib/bar\.rb|, @ui.output 106 assert_match %r|Rakefile|, @ui.output 107 assert_equal "", @ui.error 108 end 109 110 def test_execute_no_prefix 111 @cmd.options[:args] = %w[foo] 112 @cmd.options[:prefix] = false 113 114 gem 'foo' 115 116 use_ui @ui do 117 @cmd.execute 118 end 119 120 expected = <<-EOF 121Rakefile 122lib/foo.rb 123 EOF 124 125 assert_equal expected, @ui.output 126 127 assert_equal "", @ui.error 128 end 129 130 def test_execute_default_gem 131 default_gem_spec = new_default_spec("default", "2.0.0.0", 132 nil, "default/gem.rb") 133 default_gem_spec.executables = ["default_command"] 134 default_gem_spec.files += ["default_gem.so"] 135 install_default_specs(default_gem_spec) 136 137 @cmd.options[:args] = %w[default] 138 139 use_ui @ui do 140 @cmd.execute 141 end 142 143 expected = %W[ 144 #{Gem::ConfigMap[:bindir]}/default_command 145 #{Gem::ConfigMap[:rubylibdir]}/default/gem.rb 146 #{Gem::ConfigMap[:archdir]}/default_gem.so 147 ].sort.join "\n" 148 149 assert_equal expected, @ui.output.chomp 150 assert_equal "", @ui.error 151 end 152 153 def test_handle_options 154 refute @cmd.options[:lib_only] 155 assert @cmd.options[:prefix] 156 assert_empty @cmd.options[:specdirs] 157 assert_nil @cmd.options[:version] 158 159 @cmd.send :handle_options, %w[-l -s foo --version 0.0.2 --no-prefix] 160 161 assert @cmd.options[:lib_only] 162 refute @cmd.options[:prefix] 163 assert_equal %w[foo], @cmd.options[:specdirs] 164 assert_equal Gem::Requirement.new('0.0.2'), @cmd.options[:version] 165 end 166 167end 168 169