Removed obsolete bin scripts.
[rbx.git] / test / rubygems / functional.rb
blob483816732442df2d2de17132c19a00f321b856ed
1 #!/usr/bin/env ruby
2 #--
3 # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4 # All rights reserved.
5 # See LICENSE.txt for permissions.
6 #++
8 require 'test/unit'
9 require 'rubygems'
10 require 'test/insure_session'
11 require 'rubygems/format'
12 require 'rubygems/command_manager'
14 class FunctionalTest < Test::Unit::TestCase
15   def setup
16     @gem_path = File.expand_path("bin/gem")
17     lib_path = File.expand_path("lib")
18     @ruby_options = "-I#{lib_path} -I."
19     @verbose = false
20   end
22   def test_gem_help_options
23     gem_nossl 'help options'
24     assert_match(/Usage:/, @out, @err)
25     assert_status
26   end
28   def test_gem_help_commands
29     gem_nossl 'help commands'
30     assert_match(/gem install/, @out)
31     assert_status
32   end
34   def test_gem_no_args_shows_help
35     gem_nossl
36     assert_match(/Usage:/, @out)
37     assert_status 1
38   end
40   # This test is disabled because of the insanely long time it takes
41   # to time out.
42   def xtest_bogus_source_hoses_up_remote_install_but_gem_command_gives_decent_error_message
43     @ruby_options << " -rtest/bogussources"
44     gem_nossl "install asdf --remote"
45     assert_match(/error/im, @err)
46     assert_status 1
47   end
49   def test_all_command_helps
50     mgr = Gem::CommandManager.new
51     mgr.command_names.each do |cmdname|
52       gem_nossl "help #{cmdname}"
53       assert_match(/Usage: gem #{cmdname}/, @out,
54                    "should see help for #{cmdname}")
55     end
56   end
58   # :section: Help Methods
60   # Run a gem command without the SSL library.
61   def gem_nossl(options="")
62     old_options = @ruby_options.dup
63     @ruby_options << " -Itest/fake_certlib"
64     gem(options)
65   ensure
66     @ruby_options = old_options
67   end
69   # Run a gem command with the SSL library.
70   def gem_withssl(options="")
71     gem(options)
72   end
74   # Run a gem command for the functional test.
75   def gem(options="")
76     shell = Session::Shell.new
77     options = options + " --config-file missing_file" if options !~ /--config-file/
78     command = "#{Gem.ruby} #{@ruby_options} #{@gem_path} #{options}"
79     puts "\n\nCOMMAND: [#{command}]" if @verbose
80     @out, @err = shell.execute command
81     @status = shell.exit_status
82     puts "STATUS:  [#{@status}]" if @verbose
83     puts "OUTPUT:  [#{@out}]" if @verbose
84     puts "ERROR:   [#{@err}]" if @verbose
85     puts "PWD:     [#{Dir.pwd}]" if @verbose
86     shell.close
87   end
89   private
91   def assert_status(expected_status=0)
92     assert_equal expected_status, @status
93   end
95 end