Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / test / rubygems / test_gem_command_manager.rb
blobb7767f421d9a06396c2287b82b8bf65e51a17edb
1 #--
2 # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3 # All rights reserved.
4 # See LICENSE.txt for permissions.
5 #++
7 require 'test/unit'
8 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
9 require 'rubygems/command_manager'
11 class InterruptCommand < Gem::Command
13   def initialize
14     super('interrupt', 'Raises an Interrupt Exception', {})
15   end
17   def execute
18     raise Interrupt, "Interrupt exception"
19   end
21 end
23 class TestGemCommandManager < RubyGemTestCase
25   def setup
26     super
28     @command_manager = Gem::CommandManager.new
29   end
31   def test_run_interrupt
32     use_ui @ui do
33       @command_manager.register_command :interrupt
34       assert_raises MockGemUi::TermError do
35         @command_manager.run 'interrupt'
36       end
37       assert_equal '', ui.output
38       assert_equal "ERROR:  Interrupted\n", ui.error
39     end
40   end
42   def test_process_args_bad_arg
43     use_ui @ui do
44       assert_raises(MockGemUi::TermError) {
45         @command_manager.process_args("--bad-arg")
46       }
47     end
49     assert_match(/invalid option: --bad-arg/i, @ui.error)
50   end
52   def test_process_args_install
53     #capture all install options
54     use_ui @ui do
55       check_options = nil
56       @command_manager['install'].when_invoked do |options|
57         check_options = options
58         true
59       end
61       #check defaults
62       @command_manager.process_args("install")
63       assert_equal false, check_options[:test]
64       assert_equal true, check_options[:generate_rdoc]
65       assert_equal false, check_options[:force]
66       assert_equal :both, check_options[:domain]
67       assert_equal true, check_options[:wrappers]
68       assert_equal Gem::Requirement.default, check_options[:version]
69       assert_equal Gem.dir, check_options[:install_dir]
70       assert_equal nil, check_options[:bin_dir]
72       #check settings
73       check_options = nil
74       @command_manager.process_args(
75         "install --force --test --local --rdoc --install-dir . --version 3.0 --no-wrapper --bindir . ")
76       assert_equal true, check_options[:test]
77       assert_equal true, check_options[:generate_rdoc]
78       assert_equal true, check_options[:force]
79       assert_equal :local, check_options[:domain]
80       assert_equal false, check_options[:wrappers]
81       assert_equal Gem::Requirement.new('3.0'), check_options[:version]
82       assert_equal Dir.pwd, check_options[:install_dir]
83       assert_equal Dir.pwd, check_options[:bin_dir]
85       #check remote domain
86       check_options = nil
87       @command_manager.process_args("install --remote")
88       assert_equal :remote, check_options[:domain]
90       #check both domain
91       check_options = nil
92       @command_manager.process_args("install --both")
93       assert_equal :both, check_options[:domain]
95       #check both domain
96       check_options = nil
97       @command_manager.process_args("install --both")
98       assert_equal :both, check_options[:domain]
99     end
100   end
102   def test_process_args_uninstall
103     #capture all uninstall options
104     check_options = nil
105     @command_manager['uninstall'].when_invoked do |options|
106       check_options = options
107       true
108     end
110     #check defaults
111     @command_manager.process_args("uninstall")
112     assert_equal Gem::Requirement.default, check_options[:version]
114     #check settings
115     check_options = nil
116     @command_manager.process_args("uninstall foobar --version 3.0")
117     assert_equal "foobar", check_options[:args].first
118     assert_equal Gem::Requirement.new('3.0'), check_options[:version]
119   end
121   def test_process_args_check
122     #capture all check options
123     check_options = nil
124     @command_manager['check'].when_invoked do |options|
125       check_options = options
126       true
127     end
129     #check defaults
130     @command_manager.process_args("check")
131     assert_equal false, check_options[:verify]
132     assert_equal false, check_options[:alien]
134     #check settings
135     check_options = nil
136     @command_manager.process_args("check --verify foobar --alien")
137     assert_equal "foobar", check_options[:verify]
138     assert_equal true, check_options[:alien]
139   end
141   def test_process_args_build
142     #capture all build options
143     check_options = nil
144     @command_manager['build'].when_invoked do |options|
145       check_options = options
146       true
147     end
149     #check defaults
150     @command_manager.process_args("build")
151     #NOTE: Currently no defaults
153     #check settings
154     check_options = nil
155     @command_manager.process_args("build foobar.rb")
156     assert_equal 'foobar.rb', check_options[:args].first
157   end
159   def test_process_args_query
160     #capture all query options
161     check_options = nil
162     @command_manager['query'].when_invoked do |options|
163       check_options = options
164       true
165     end
167     #check defaults
168     @command_manager.process_args("query")
169     assert_equal(//, check_options[:name])
170     assert_equal :local, check_options[:domain]
171     assert_equal false, check_options[:details]
173     #check settings
174     check_options = nil
175     @command_manager.process_args("query --name foobar --local --details")
176     assert_equal(/foobar/i, check_options[:name])
177     assert_equal :local, check_options[:domain]
178     assert_equal true, check_options[:details]
180     #remote domain
181     check_options = nil
182     @command_manager.process_args("query --remote")
183     assert_equal :remote, check_options[:domain]
185     #both (local/remote) domains
186     check_options = nil
187     @command_manager.process_args("query --both")
188     assert_equal :both, check_options[:domain]
189   end
191   def test_process_args_update
192     #capture all update options
193     check_options = nil
194     @command_manager['update'].when_invoked do |options|
195       check_options = options
196       true
197     end
199     #check defaults
200     @command_manager.process_args("update")
201     assert_equal true, check_options[:generate_rdoc]
203     #check settings
204     check_options = nil
205     @command_manager.process_args("update --force --test --rdoc --install-dir .")
206     assert_equal true, check_options[:test]
207     assert_equal true, check_options[:generate_rdoc]
208     assert_equal true, check_options[:force]
209     assert_equal Dir.pwd, check_options[:install_dir]
210   end