1require 'rubygems/test_case' 2require 'rubygems/gem_runner' 3 4class TestGemGemRunner < Gem::TestCase 5 6 def setup 7 super 8 9 @orig_args = Gem::Command.build_args 10 end 11 12 def teardown 13 super 14 15 Gem::Command.build_args = @orig_args 16 end 17 18 def test_do_configuration 19 Gem.clear_paths 20 21 temp_conf = File.join @tempdir, '.gemrc' 22 23 other_gem_path = File.join @tempdir, 'other_gem_path' 24 other_gem_home = File.join @tempdir, 'other_gem_home' 25 26 Gem.ensure_gem_subdirectories other_gem_path 27 Gem.ensure_gem_subdirectories other_gem_home 28 29 File.open temp_conf, 'w' do |fp| 30 fp.puts "gem: --commands" 31 fp.puts "gemhome: #{other_gem_home}" 32 fp.puts "gempath:" 33 fp.puts " - #{other_gem_path}" 34 fp.puts "rdoc: --all" 35 end 36 37 gr = Gem::GemRunner.new 38 gr.send :do_configuration, %W[--config-file #{temp_conf}] 39 40 assert_equal [other_gem_path, other_gem_home], Gem.path 41 assert_equal %w[--commands], Gem::Command.extra_args 42 end 43 44 def test_build_args_are_handled 45 Gem.clear_paths 46 47 cls = Class.new(Gem::Command) do 48 def execute 49 end 50 end 51 52 test_obj = cls.new :ba_test 53 54 cmds = Gem::CommandManager.new 55 cmds.register_command :ba_test, test_obj 56 57 runner = Gem::GemRunner.new :command_manager => cmds 58 runner.run(%W[ba_test -- --build_arg1 --build_arg2]) 59 60 assert_equal %w[--build_arg1 --build_arg2], test_obj.options[:build_args] 61 end 62 63end 64 65