Removed obsolete bin scripts.
[rbx.git] / test / rubygems / test_gem_commands_install_command.rb
blob101195a43ea154199fc31e2b503da2d6974ac4f5
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 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     @fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] =
90       @source_index.dump
92     @cmd.options[:args] = %w[nonexistent]
94     use_ui @ui do
95       e = assert_raises Gem::SystemExitException do
96         @cmd.execute
97       end
98       assert_equal 2, e.exit_code
99     end
101     assert_equal "ERROR:  could not find nonexistent locally or in a repository\n",
102                  @ui.error
103   end
105   def test_execute_remote
106     @cmd.options[:generate_rdoc] = true
107     @cmd.options[:generate_ri] = true
108     util_setup_fake_fetcher
110     @fetcher.data["#{@gem_repo}/Marshal.#{@marshal_version}"] =
111       @source_index.dump
112     @fetcher.data["#{@gem_repo}/gems/#{@a2.full_name}.gem"] =
113       read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
115     @cmd.options[:args] = [@a2.name]
117     use_ui @ui do
118       e = assert_raises Gem::SystemExitException do
119         @cmd.execute
120       end
121       assert_equal 0, e.exit_code
122     end
124     out = @ui.output.split "\n"
125     assert_match %r|Bulk updating|, out.shift
126     assert_equal "Successfully installed #{@a2.full_name}", out.shift
127     assert_equal "1 gem installed", out.shift
128     assert_equal "Installing ri documentation for #{@a2.full_name}...",
129                  out.shift
130     assert_equal "Installing RDoc documentation for #{@a2.full_name}...",
131                  out.shift
132     assert out.empty?, out.inspect
133   end
135   def test_execute_two
136     util_setup_fake_fetcher
137     @cmd.options[:domain] = :local
139     FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"),
140                  File.join(@tempdir)
142     FileUtils.mv File.join(@gemhome, 'cache', "#{@b2.full_name}.gem"),
143                  File.join(@tempdir)
145     @cmd.options[:args] = [@a2.name, @b2.name]
147     use_ui @ui do
148       orig_dir = Dir.pwd
149       begin
150         Dir.chdir @tempdir
151         e = assert_raises Gem::SystemExitException do
152           @cmd.execute
153         end
154         assert_equal 0, e.exit_code
155       ensure
156         Dir.chdir orig_dir
157       end
158     end
160     out = @ui.output.split "\n"
161     assert_equal "Successfully installed #{@a2.full_name}", out.shift
162     assert_equal "Successfully installed #{@b2.full_name}", out.shift
163     assert_equal "2 gems installed", out.shift
164     assert out.empty?, out.inspect
165   end