# Create a test environment for gems.
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++


$SAFE = 1

require 'rubygems'
require 'rubygems/installer'
require 'rubygems/builder'
require 'test/mockgemui'
require 'rake'

module TestEnvironment
  include Gem::DefaultUserInteraction

  # Create a testing environment for gems.
  def create
    Dir.chdir("test/data") do
      mkdir "lib" unless File.exists? "lib"
      open("lib/code.rb", "w") do |f|
        f.puts "CODE = 1"
      end unless File.exists? "lib/code.rb"

      spec = Gem::Specification.new do |s|
        s.files = ['lib/code.rb']
        s.name = "a"
        s.version = "0.0.1"
        s.summary = "summary"
        s.description = "desc"
        s.require_path = 'lib'
      end

      use_ui(MockGemUi.new) do
        Gem::Builder.new(spec).build
        spec.version = "0.0.2"
        Gem::Builder.new(spec).build
        spec.name = 'b'
        Gem::Builder.new(spec).build
        spec.name = 'c'
        spec.version = '1.2'
        Gem::Builder.new(spec).build
        FileUtils.rm_rf "gemhome"
        FileUtils.mkdir("gemhome")
        dest_dir = File.expand_path 'gemhome'
        dest_dir.untaint
        Gem::Installer.new("a-0.0.1.gem").install(false, dest_dir, false)
        Gem::Installer.new("a-0.0.2.gem").install(false, dest_dir, false)
        Gem::Installer.new("b-0.0.2.gem").install(false, dest_dir, false)
        Gem::Installer.new("c-1.2.gem").install(false, dest_dir, false)
      end
    end
  end
  
  extend(self)
end


syntax highlighted by Code2HTML, v. 0.9.1