Class | Gem::InstallerTestCase |
In: |
lib/rubygems/installer_test_case.rb
|
Parent: | Gem::TestCase |
A test case for Gem::Installer.
# File lib/rubygems/installer_test_case.rb, line 57 57: def setup 58: super 59: 60: @spec = quick_gem 'a' 61: util_make_exec @spec 62: 63: @gem = File.join @tempdir, @spec.file_name 64: 65: @installer = util_installer @spec, @gem, @gemhome 66: 67: @user_spec = quick_gem 'b' 68: util_make_exec @user_spec 69: 70: @user_gem = File.join @tempdir, @user_spec.file_name 71: 72: @user_installer = util_installer @user_spec, @user_gem, Gem.user_dir 73: @user_installer.gem_dir = File.join(Gem.user_dir, 'gems', 74: @user_spec.full_name) 75: end
# File lib/rubygems/installer_test_case.rb, line 77 77: def util_gem_bindir spec = @spec 78: File.join util_gem_dir(spec), "bin" 79: end
# File lib/rubygems/installer_test_case.rb, line 81 81: def util_gem_dir spec = @spec 82: File.join @gemhome, "gems", spec.full_name 83: end
# File lib/rubygems/installer_test_case.rb, line 85 85: def util_inst_bindir 86: File.join @gemhome, "bin" 87: end
# File lib/rubygems/installer_test_case.rb, line 133 133: def util_installer(spec, gem_path, gem_home) 134: util_build_gem spec 135: FileUtils.mv Gem.cache_gem(spec.file_name), @tempdir 136: installer = Gem::Installer.new gem_path 137: installer.gem_dir = util_gem_dir 138: installer.gem_home = gem_home 139: installer.spec = spec 140: 141: installer 142: end
# File lib/rubygems/installer_test_case.rb, line 89 89: def util_make_exec(spec = @spec, shebang = "#!/usr/bin/ruby") 90: spec.executables = %w[executable] 91: spec.files << 'bin/executable' 92: 93: bindir = util_gem_bindir spec 94: FileUtils.mkdir_p bindir 95: exec_path = File.join bindir, 'executable' 96: open exec_path, 'w' do |io| 97: io.puts shebang 98: end 99: 100: temp_bin = File.join(@tempdir, 'bin') 101: FileUtils.mkdir_p temp_bin 102: open File.join(temp_bin, 'executable'), 'w' do |io| 103: io.puts shebang 104: end 105: end
# File lib/rubygems/installer_test_case.rb, line 107 107: def util_setup_gem(ui = @ui) # HACK fix use_ui to make this automatic 108: @spec.files << File.join('lib', 'code.rb') 109: @spec.extensions << File.join('ext', 'a', 'mkrf_conf.rb') 110: 111: Dir.chdir @tempdir do 112: FileUtils.mkdir_p 'bin' 113: FileUtils.mkdir_p 'lib' 114: FileUtils.mkdir_p File.join('ext', 'a') 115: File.open File.join('bin', 'executable'), 'w' do |f| f.puts '1' end 116: File.open File.join('lib', 'code.rb'), 'w' do |f| f.puts '1' end 117: File.open File.join('ext', 'a', 'mkrf_conf.rb'), 'w' do |f| 118: f << "File.open 'Rakefile', 'w' do |rf| rf.puts \"task :default\" end\n" 119: end 120: 121: use_ui ui do 122: FileUtils.rm @gem 123: Gem::Builder.new(@spec).build 124: end 125: end 126: 127: @installer = Gem::Installer.new @gem 128: end