2007-11-10 02:48:56 -05:00
|
|
|
require 'rubygems'
|
2008-10-25 18:58:43 -04:00
|
|
|
require 'minitest/unit'
|
2007-11-10 02:48:56 -05:00
|
|
|
require 'test/insure_session'
|
|
|
|
require 'rubygems/format'
|
|
|
|
require 'rubygems/command_manager'
|
|
|
|
|
2008-10-25 18:58:43 -04:00
|
|
|
class FunctionalTest < MiniTest::Unit::TestCase
|
|
|
|
|
2007-11-10 02:48:56 -05:00
|
|
|
def setup
|
|
|
|
@gem_path = File.expand_path("bin/gem")
|
|
|
|
lib_path = File.expand_path("lib")
|
|
|
|
@ruby_options = "-I#{lib_path} -I."
|
|
|
|
@verbose = false
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_gem_help_options
|
|
|
|
gem_nossl 'help options'
|
|
|
|
assert_match(/Usage:/, @out, @err)
|
|
|
|
assert_status
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_gem_help_commands
|
|
|
|
gem_nossl 'help commands'
|
|
|
|
assert_match(/gem install/, @out)
|
|
|
|
assert_status
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_gem_no_args_shows_help
|
|
|
|
gem_nossl
|
|
|
|
assert_match(/Usage:/, @out)
|
|
|
|
assert_status 1
|
|
|
|
end
|
|
|
|
|
|
|
|
# This test is disabled because of the insanely long time it takes
|
|
|
|
# to time out.
|
|
|
|
def xtest_bogus_source_hoses_up_remote_install_but_gem_command_gives_decent_error_message
|
|
|
|
@ruby_options << " -rtest/bogussources"
|
|
|
|
gem_nossl "install asdf --remote"
|
|
|
|
assert_match(/error/im, @err)
|
|
|
|
assert_status 1
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_all_command_helps
|
|
|
|
mgr = Gem::CommandManager.new
|
|
|
|
mgr.command_names.each do |cmdname|
|
|
|
|
gem_nossl "help #{cmdname}"
|
|
|
|
assert_match(/Usage: gem #{cmdname}/, @out,
|
|
|
|
"should see help for #{cmdname}")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# :section: Help Methods
|
|
|
|
|
|
|
|
# Run a gem command without the SSL library.
|
|
|
|
def gem_nossl(options="")
|
|
|
|
old_options = @ruby_options.dup
|
|
|
|
@ruby_options << " -Itest/fake_certlib"
|
|
|
|
gem(options)
|
|
|
|
ensure
|
|
|
|
@ruby_options = old_options
|
|
|
|
end
|
|
|
|
|
|
|
|
# Run a gem command with the SSL library.
|
|
|
|
def gem_withssl(options="")
|
|
|
|
gem(options)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Run a gem command for the functional test.
|
|
|
|
def gem(options="")
|
|
|
|
shell = Session::Shell.new
|
|
|
|
options = options + " --config-file missing_file" if options !~ /--config-file/
|
|
|
|
command = "#{Gem.ruby} #{@ruby_options} #{@gem_path} #{options}"
|
|
|
|
puts "\n\nCOMMAND: [#{command}]" if @verbose
|
|
|
|
@out, @err = shell.execute command
|
|
|
|
@status = shell.exit_status
|
|
|
|
puts "STATUS: [#{@status}]" if @verbose
|
|
|
|
puts "OUTPUT: [#{@out}]" if @verbose
|
|
|
|
puts "ERROR: [#{@err}]" if @verbose
|
|
|
|
puts "PWD: [#{Dir.pwd}]" if @verbose
|
|
|
|
shell.close
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def assert_status(expected_status=0)
|
|
|
|
assert_equal expected_status, @status
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
2008-10-25 18:58:43 -04:00
|
|
|
|
|
|
|
MiniTest::Unit.autorun
|
|
|
|
|