mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Import RubyGems trunk revision 1493.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7a4aad7535
commit
fbf59bdbea
144 changed files with 21330 additions and 0 deletions
211
test/rubygems/test_gem_command_manager.rb
Normal file
211
test/rubygems/test_gem_command_manager.rb
Normal file
|
@ -0,0 +1,211 @@
|
|||
#--
|
||||
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
||||
# All rights reserved.
|
||||
# See LICENSE.txt for permissions.
|
||||
#++
|
||||
|
||||
require 'test/unit'
|
||||
require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
|
||||
require 'rubygems/command_manager'
|
||||
|
||||
class InterruptCommand < Gem::Command
|
||||
|
||||
def initialize
|
||||
super('interrupt', 'Raises an Interrupt Exception', {})
|
||||
end
|
||||
|
||||
def execute
|
||||
raise Interrupt, "Interrupt exception"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class TestGemCommandManager < RubyGemTestCase
|
||||
|
||||
def setup
|
||||
super
|
||||
|
||||
@command_manager = Gem::CommandManager.new
|
||||
end
|
||||
|
||||
def test_run_interrupt
|
||||
use_ui @ui do
|
||||
@command_manager.register_command :interrupt
|
||||
assert_raises MockGemUi::TermError do
|
||||
@command_manager.run 'interrupt'
|
||||
end
|
||||
assert_equal '', ui.output
|
||||
assert_equal "ERROR: Interrupted\n", ui.error
|
||||
end
|
||||
end
|
||||
|
||||
def test_process_args_bad_arg
|
||||
use_ui @ui do
|
||||
assert_raises(MockGemUi::TermError) {
|
||||
@command_manager.process_args("--bad-arg")
|
||||
}
|
||||
end
|
||||
|
||||
assert_match(/invalid option: --bad-arg/i, @ui.error)
|
||||
end
|
||||
|
||||
def test_process_args_install
|
||||
#capture all install options
|
||||
use_ui @ui do
|
||||
check_options = nil
|
||||
@command_manager['install'].when_invoked do |options|
|
||||
check_options = options
|
||||
true
|
||||
end
|
||||
|
||||
#check defaults
|
||||
@command_manager.process_args("install")
|
||||
assert_equal false, check_options[:test]
|
||||
assert_equal true, check_options[:generate_rdoc]
|
||||
assert_equal false, check_options[:force]
|
||||
assert_equal :both, check_options[:domain]
|
||||
assert_equal true, check_options[:wrappers]
|
||||
assert_equal Gem::Requirement.default, check_options[:version]
|
||||
assert_equal Gem.dir, check_options[:install_dir]
|
||||
|
||||
#check settings
|
||||
check_options = nil
|
||||
@command_manager.process_args(
|
||||
"install --force --test --local --rdoc --install-dir . --version 3.0 --no-wrapper")
|
||||
assert_equal true, check_options[:test]
|
||||
assert_equal true, check_options[:generate_rdoc]
|
||||
assert_equal true, check_options[:force]
|
||||
assert_equal :local, check_options[:domain]
|
||||
assert_equal false, check_options[:wrappers]
|
||||
assert_equal Gem::Requirement.new('3.0'), check_options[:version]
|
||||
assert_equal Dir.pwd, check_options[:install_dir]
|
||||
|
||||
#check remote domain
|
||||
check_options = nil
|
||||
@command_manager.process_args("install --remote")
|
||||
assert_equal :remote, check_options[:domain]
|
||||
|
||||
#check both domain
|
||||
check_options = nil
|
||||
@command_manager.process_args("install --both")
|
||||
assert_equal :both, check_options[:domain]
|
||||
|
||||
#check both domain
|
||||
check_options = nil
|
||||
@command_manager.process_args("install --both")
|
||||
assert_equal :both, check_options[:domain]
|
||||
end
|
||||
end
|
||||
|
||||
def test_process_args_uninstall
|
||||
#capture all uninstall options
|
||||
check_options = nil
|
||||
@command_manager['uninstall'].when_invoked do |options|
|
||||
check_options = options
|
||||
true
|
||||
end
|
||||
|
||||
#check defaults
|
||||
@command_manager.process_args("uninstall")
|
||||
assert_equal Gem::Requirement.default, check_options[:version]
|
||||
|
||||
#check settings
|
||||
check_options = nil
|
||||
@command_manager.process_args("uninstall foobar --version 3.0")
|
||||
assert_equal "foobar", check_options[:args].first
|
||||
assert_equal Gem::Requirement.new('3.0'), check_options[:version]
|
||||
end
|
||||
|
||||
def test_process_args_check
|
||||
#capture all check options
|
||||
check_options = nil
|
||||
@command_manager['check'].when_invoked do |options|
|
||||
check_options = options
|
||||
true
|
||||
end
|
||||
|
||||
#check defaults
|
||||
@command_manager.process_args("check")
|
||||
assert_equal false, check_options[:verify]
|
||||
assert_equal false, check_options[:alien]
|
||||
|
||||
#check settings
|
||||
check_options = nil
|
||||
@command_manager.process_args("check --verify foobar --alien")
|
||||
assert_equal "foobar", check_options[:verify]
|
||||
assert_equal true, check_options[:alien]
|
||||
end
|
||||
|
||||
def test_process_args_build
|
||||
#capture all build options
|
||||
check_options = nil
|
||||
@command_manager['build'].when_invoked do |options|
|
||||
check_options = options
|
||||
true
|
||||
end
|
||||
|
||||
#check defaults
|
||||
@command_manager.process_args("build")
|
||||
#NOTE: Currently no defaults
|
||||
|
||||
#check settings
|
||||
check_options = nil
|
||||
@command_manager.process_args("build foobar.rb")
|
||||
assert_equal 'foobar.rb', check_options[:args].first
|
||||
end
|
||||
|
||||
def test_process_args_query
|
||||
#capture all query options
|
||||
check_options = nil
|
||||
@command_manager['query'].when_invoked do |options|
|
||||
check_options = options
|
||||
true
|
||||
end
|
||||
|
||||
#check defaults
|
||||
@command_manager.process_args("query")
|
||||
assert_equal(/.*/, check_options[:name])
|
||||
assert_equal :local, check_options[:domain]
|
||||
assert_equal false, check_options[:details]
|
||||
|
||||
#check settings
|
||||
check_options = nil
|
||||
@command_manager.process_args("query --name foobar --local --details")
|
||||
assert_equal(/foobar/i, check_options[:name])
|
||||
assert_equal :local, check_options[:domain]
|
||||
assert_equal true, check_options[:details]
|
||||
|
||||
#remote domain
|
||||
check_options = nil
|
||||
@command_manager.process_args("query --remote")
|
||||
assert_equal :remote, check_options[:domain]
|
||||
|
||||
#both (local/remote) domains
|
||||
check_options = nil
|
||||
@command_manager.process_args("query --both")
|
||||
assert_equal :both, check_options[:domain]
|
||||
end
|
||||
|
||||
def test_process_args_update
|
||||
#capture all update options
|
||||
check_options = nil
|
||||
@command_manager['update'].when_invoked do |options|
|
||||
check_options = options
|
||||
true
|
||||
end
|
||||
|
||||
#check defaults
|
||||
@command_manager.process_args("update")
|
||||
assert_equal true, check_options[:generate_rdoc]
|
||||
|
||||
#check settings
|
||||
check_options = nil
|
||||
@command_manager.process_args("update --force --test --rdoc --install-dir .")
|
||||
assert_equal true, check_options[:test]
|
||||
assert_equal true, check_options[:generate_rdoc]
|
||||
assert_equal true, check_options[:force]
|
||||
assert_equal Dir.pwd, check_options[:install_dir]
|
||||
end
|
||||
|
||||
end
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue