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