Blame SOURCES/test_dependent_scls.rb

d54c42
require 'test/unit'
d54c42
require 'rbconfig'
d54c42
require 'rubygems'
d54c42
require 'rubygems/defaults/operating_system'
d54c42
d54c42
class TestDependentSCLS < Test::Unit::TestCase
d54c42
d54c42
  def setup
d54c42
    # Avoid caching
d54c42
    Gem.class_eval("@default_locations, @default_dirs = nil, nil")
d54c42
d54c42
    # TODO: Different bin dir during build ("/builddir/build/BUILD/ruby-2.0.0-p247")
d54c42
    @bin_dir = Gem::ConfigMap[:bindir].split(File::SEPARATOR).last
d54c42
    @scl = ENV['X_SCLS'].strip
d54c42
  end
d54c42
d54c42
  def test_default_paths
d54c42
    default_locations = { :system => "/opt/rh/#{@scl}/root/usr",
d54c42
                          :local  => "/opt/rh/#{@scl}/root/usr/local" }
d54c42
    assert_equal default_locations, Gem.default_locations
d54c42
d54c42
    default_dirs = { :system => { :bin_dir => "/opt/rh/#{@scl}/root/usr/#{@bin_dir}",
d54c42
                                  :gem_dir => "/opt/rh/#{@scl}/root/usr/share/gems",
d54c42
                                  :ext_dir => "/opt/rh/#{@scl}/root/usr/lib64/gems" },
d54c42
                     :local  => { :bin_dir => "/opt/rh/#{@scl}/root/usr/local/#{@bin_dir}",
d54c42
                                  :gem_dir => "/opt/rh/#{@scl}/root/usr/local/share/gems",
d54c42
                                  :ext_dir => "/opt/rh/#{@scl}/root/usr/local/lib64/gems" } }
d54c42
    assert_equal default_dirs, Gem.default_dirs
d54c42
  end
d54c42
d54c42
  # Gem.default_locations and Gem.default_dirs
d54c42
  # should contain paths to dependent scls binary extensions
d54c42
  # if the dependent scl adds itself on $GEM_PATH
d54c42
  #
d54c42
  # See rhbz#1034639
d54c42
  def test_paths_with_dependent_scl
d54c42
    prefix = '/some/prefix'
d54c42
    scl_name = 'ruby_x'
d54c42
d54c42
    ENV['X_SCLS'] = "#{@scl} #{scl_name}" # enabled scls
d54c42
    ENV['GEM_PATH'] = "#{prefix}/#{scl_name}/root/usr/share/gems"
d54c42
d54c42
    default_locations = { :system => "/opt/rh/#{@scl}/root/usr",
d54c42
                          :local  => "/opt/rh/#{@scl}/root/usr/local",
d54c42
                          :"#{scl_name}_system" => "#{prefix}/#{scl_name}/root/usr",
d54c42
                          :"#{scl_name}_local"  => "#{prefix}/#{scl_name}/root/usr/local" }
d54c42
d54c42
    assert_equal default_locations, Gem.default_locations
d54c42
d54c42
    default_dirs =  { :system => { :bin_dir => "/opt/rh/#{@scl}/root/usr/#{@bin_dir}",
d54c42
                                   :gem_dir => "/opt/rh/#{@scl}/root/usr/share/gems",
d54c42
                                   :ext_dir => "/opt/rh/#{@scl}/root/usr/lib64/gems" },
d54c42
                      :local  => { :bin_dir => "/opt/rh/#{@scl}/root/usr/local/#{@bin_dir}",
d54c42
                                   :gem_dir => "/opt/rh/#{@scl}/root/usr/local/share/gems",
d54c42
                                   :ext_dir => "/opt/rh/#{@scl}/root/usr/local/lib64/gems" },
d54c42
                      :"#{scl_name}_system" => { :bin_dir => "#{prefix}/#{scl_name}/root/usr/#{@bin_dir}",
d54c42
                                                 :gem_dir => "#{prefix}/#{scl_name}/root/usr/share/gems",
d54c42
                                                 :ext_dir => "#{prefix}/#{scl_name}/root/usr/lib64/gems" },
d54c42
                      :"#{scl_name}_local"  => { :bin_dir => "#{prefix}/#{scl_name}/root/usr/local/#{@bin_dir}",
d54c42
                                                 :gem_dir => "#{prefix}/#{scl_name}/root/usr/local/share/gems",
d54c42
                                                 :ext_dir => "#{prefix}/#{scl_name}/root/usr/local/lib64/gems" } }
d54c42
    assert_equal default_dirs, Gem.default_dirs
d54c42
  end
d54c42
d54c42
end