In Files

  • rubygems/installer_test_case.rb

Class/Module Index [+]

Quicksearch

Gem::InstallerTestCase

A test case for Gem::Installer.

Public Instance Methods

setup() click to toggle source
@gem

the path to a built gem from @spec

@user_spec

the path to a built gem from @user_spec

@installer

a Gem::Installer for the @spec that installs into @gemhome

@user_installer

a Gem::Installer for the @user_spec that installs into Gem.user_dir

 
               # File rubygems/installer_test_case.rb, line 85
def setup
  super

  @spec = quick_gem 'a' do |spec|
    util_make_exec spec
  end

  @user_spec = quick_gem 'b' do |spec|
    util_make_exec spec
  end

  util_build_gem @spec
  util_build_gem @user_spec

  @gem = @spec.cache_file
  @user_gem = @user_spec.cache_file

  @installer      = util_installer @spec, @gemhome
  @user_installer = util_installer @user_spec, Gem.user_dir, :user
end
            
util_inst_bindir() click to toggle source

The path where installed executables live

 
               # File rubygems/installer_test_case.rb, line 119
def util_inst_bindir
  File.join @gemhome, "bin"
end
            
util_installer(spec, gem_home, user=false) click to toggle source

Creates an installer for spec that will install into gem_home. If user is true a user-install will be performed.

 
               # File rubygems/installer_test_case.rb, line 184
def util_installer(spec, gem_home, user=false)
  Gem::Installer.new(spec.cache_file,
                     :install_dir => gem_home,
                     :user_install => user)
end
            
util_make_exec(spec = @spec, shebang = "#!/usr/bin/ruby") click to toggle source

Adds an executable named “executable” to spec with the given shebang.

The executable is also written to the bin dir in @tmpdir and the installed gem directory for spec.

 
               # File rubygems/installer_test_case.rb, line 129
def util_make_exec(spec = @spec, shebang = "#!/usr/bin/ruby")
  spec.executables = %w[executable]
  spec.files << 'bin/executable'

  exec_path = spec.bin_file "executable"
  write_file exec_path do |io|
    io.puts shebang
  end

  bin_path = File.join @tempdir, "bin", "executable"
  write_file bin_path do |io|
    io.puts shebang
  end
end
            
util_setup_gem(ui = @ui) click to toggle source

Builds the @spec gem and returns an installer for it. The built gem includes:

bin/executable
lib/code.rb
ext/a/mkrf_conf.rb
 
               # File rubygems/installer_test_case.rb, line 152
def util_setup_gem(ui = @ui) # HACK fix use_ui to make this automatic
  @spec.files << File.join('lib', 'code.rb')
  @spec.extensions << File.join('ext', 'a', 'mkrf_conf.rb')

  Dir.chdir @tempdir do
    FileUtils.mkdir_p 'bin'
    FileUtils.mkdir_p 'lib'
    FileUtils.mkdir_p File.join('ext', 'a')
    File.open File.join('bin', 'executable'), 'w' do |f|
      f.puts "raise 'ran executable'"
    end
    File.open File.join('lib', 'code.rb'), 'w' do |f| f.puts '1' end
    File.open File.join('ext', 'a', 'mkrf_conf.rb'), 'w' do |f|
      f << <<-EOF
        File.open 'Rakefile', 'w' do |rf| rf.puts "task :default" end
      EOF
    end

    use_ui ui do
      FileUtils.rm_f @gem

      @gem = Gem::Package.build @spec
    end
  end

  @installer = Gem::Installer.new @gem
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus