Update to RDoc 2.1.0 r112
[rbx.git] / test / rubygems / test_gem_commands_install_command.rb
blobef04072b939a68c6b2ad3c3fe4fd4feaaf33fd94
1 require 'test/unit'
2 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
3 require 'rubygems/commands/install_command'
5 class TestGemCommandsInstallCommand < RubyGemTestCase
7   def setup
8     super
10     @cmd = Gem::Commands::InstallCommand.new
11     @cmd.options[:generate_rdoc] = false
12     @cmd.options[:generate_ri] = false
13   end
15   def test_execute_include_dependencies
16     @cmd.options[:include_dependencies] = true
17     @cmd.options[:args] = []
19     assert_raise Gem::CommandLineError do
20       use_ui @ui do
21         @cmd.execute
22       end
23     end
25     output = @ui.output.split "\n"
26     assert_equal "INFO:  `gem install -y` is now default and will be removed",
27                  output.shift
28     assert_equal "INFO:  use --ignore-dependencies to install only the gems you list",
29                  output.shift
30     assert output.empty?, output.inspect
31   end
33   def test_execute_local
34     util_setup_fake_fetcher
35     @cmd.options[:domain] = :local
37     FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"),
38                  File.join(@tempdir)
40     @cmd.options[:args] = [@a2.name]
42     use_ui @ui do
43       orig_dir = Dir.pwd
44       begin
45         Dir.chdir @tempdir
46         e = assert_raises Gem::SystemExitException do
47           @cmd.execute
48         end
49         assert_equal 0, e.exit_code
50       ensure
51         Dir.chdir orig_dir
52       end
53     end
55     out = @ui.output.split "\n"
56     assert_equal "Successfully installed #{@a2.full_name}", out.shift
57     assert_equal "1 gem installed", out.shift
58     assert out.empty?, out.inspect
59   end
61   def test_execute_local_missing
62     util_setup_fake_fetcher
63     @cmd.options[:domain] = :local
65     @cmd.options[:args] = %w[no_such_gem]
67     use_ui @ui do
68       e = assert_raises Gem::SystemExitException do
69         @cmd.execute
70       end
71       assert_equal 2, e.exit_code
72     end
74     # HACK no repository was checked
75     assert_equal "ERROR:  could not find gem no_such_gem locally or in a repository\n",
76                  @ui.error
77   end
79   def test_execute_no_gem
80     @cmd.options[:args] = %w[]
82     assert_raise Gem::CommandLineError do
83       @cmd.execute
84     end
85   end
87   def test_execute_nonexistent
88     util_setup_fake_fetcher
89     util_setup_spec_fetcher
91     @cmd.options[:args] = %w[nonexistent]
93     use_ui @ui do
94       e = assert_raises Gem::SystemExitException do
95         @cmd.execute
96       end
97       assert_equal 2, e.exit_code
98     end
100     assert_equal "ERROR:  could not find gem nonexistent locally or in a repository\n",
101                  @ui.error
102   end
104   def test_execute_remote
105     @cmd.options[:generate_rdoc] = true
106     @cmd.options[:generate_ri] = true
108     util_setup_fake_fetcher
109     util_setup_spec_fetcher @a2
111     @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
112       read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
114     @cmd.options[:args] = [@a2.name]
116     use_ui @ui do
117       e = assert_raises Gem::SystemExitException do
118         @cmd.execute
119       end
120       assert_equal 0, e.exit_code
121     end
123     out = @ui.output.split "\n"
124     assert_equal "Successfully installed #{@a2.full_name}", out.shift
125     assert_equal "1 gem installed", out.shift
126     assert_equal "Installing ri documentation for #{@a2.full_name}...",
127                  out.shift
128     assert_equal "Installing RDoc documentation for #{@a2.full_name}...",
129                  out.shift
130     assert out.empty?, out.inspect
131   end
133   def test_execute_two
134     util_setup_fake_fetcher
135     @cmd.options[:domain] = :local
137     FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"),
138                  File.join(@tempdir)
140     FileUtils.mv File.join(@gemhome, 'cache', "#{@b2.full_name}.gem"),
141                  File.join(@tempdir)
143     @cmd.options[:args] = [@a2.name, @b2.name]
145     use_ui @ui do
146       orig_dir = Dir.pwd
147       begin
148         Dir.chdir @tempdir
149         e = assert_raises Gem::SystemExitException do
150           @cmd.execute
151         end
152         assert_equal 0, e.exit_code
153       ensure
154         Dir.chdir orig_dir
155       end
156     end
158     out = @ui.output.split "\n"
159     assert_equal "Successfully installed #{@a2.full_name}", out.shift
160     assert_equal "Successfully installed #{@b2.full_name}", out.shift
161     assert_equal "2 gems installed", out.shift
162     assert out.empty?, out.inspect
163   end