require_relative '../spec_helper'

describe "The RUBYLIB environment variable" do
  before (:each) do
    @rubylib, ENV["RUBYLIB"] = ENV["RUBYLIB"], nil
  end

  after (:each) do
    ENV["RUBYLIB"] = @rubylib
  end

  it "adds a directory to $LOAD_PATH" do
    dir = tmp("rubylib/incl")
    ENV["RUBYLIB"] = dir
    paths = ruby_exe("puts $LOAD_PATH").lines.map(&:chomp)
    paths.should include(dir)
  end

  it "adds a colon-separated list of directories to $LOAD_PATH" do
    dir1, dir2 = tmp("rubylib/incl1"), tmp("rubylib/incl2")
    ENV["RUBYLIB"] = "#{dir1}:#{dir2}"
    paths = ruby_exe("puts $LOAD_PATH").lines.map(&:chomp)
    paths.should include(dir1)
    paths.should include(dir2)
    paths.index(dir1).should < paths.index(dir2)
  end

  it "adds the directory at the front of $LOAD_PATH" do
    dir = tmp("rubylib/incl_front")
    ENV["RUBYLIB"] = dir
    paths = ruby_exe("puts $LOAD_PATH").lines.map(&:chomp)
    if PlatformGuard.implementation? :ruby
      # In a MRI checkout, $PWD ends up as the first entry in $LOAD_PATH.
      # So just assert that it's at the beginning.
      idx = paths.index(dir)
      idx.should < 2
      idx.should < paths.size-1
    else
      paths[0].should == dir
    end
  end

  it "adds the directory after directories added by -I" do
    dash_i_dir = tmp("dash_I_include")
    rubylib_dir = tmp("rubylib_include")
    ENV["RUBYLIB"] = rubylib_dir
    paths = ruby_exe("puts $LOAD_PATH", options: "-I #{dash_i_dir}").lines.map(&:chomp)
    paths.should include(dash_i_dir)
    paths.should include(rubylib_dir)
    paths.index(dash_i_dir).should < paths.index(rubylib_dir)
  end

  it "adds the directory after directories added by -I within RUBYOPT" do
    rubyopt_dir = tmp("rubyopt_include")
    rubylib_dir = tmp("rubylib_include")
    ENV["RUBYLIB"] = rubylib_dir
    paths = ruby_exe("puts $LOAD_PATH", env: { "RUBYOPT" => "-I#{rubyopt_dir}" }).lines.map(&:chomp)
    paths.should include(rubyopt_dir)
    paths.should include(rubylib_dir)
    paths.index(rubyopt_dir).should < paths.index(rubylib_dir)
  end

  it "keeps spaces in the value" do
    ENV["RUBYLIB"] = " rubylib/incl "
    out = ruby_exe("puts $LOAD_PATH")
    out.should include(" rubylib/incl ")
  end
end

Add specs for the RUBYLIB environment variable
Add specs for the RUBYLIB environment variable
