diff --git a/lib/irb/init.rb b/lib/irb/init.rb index b69f68d53..64420a1b5 100644 --- a/lib/irb/init.rb +++ b/lib/irb/init.rb @@ -410,7 +410,6 @@ def IRB.rc_file(ext = IRBRC_EXT) @CONF[:RC_NAME_GENERATOR] ||= rcgen if File.exist?(rcgen.call(IRBRC_EXT)) @CONF[:RC_NAME_GENERATOR] = rcgen - break end end end diff --git a/test/irb/test_init.rb b/test/irb/test_init.rb index b6a8f5529..b5a195c97 100644 --- a/test/irb/test_init.rb +++ b/test/irb/test_init.rb @@ -50,6 +50,27 @@ def test_rc_file end end + def test_rc_file_loading_order + tmpdir = @tmpdir + Dir.chdir(tmpdir) do + # tmpdir is ENV["HOME"], so another dir is needed + project_dir = "#{tmpdir}/project" + FileUtils.mkdir_p(project_dir) + Dir.chdir(project_dir) do + ENV["XDG_CONFIG_HOME"] = "#{tmpdir}/xdg" + FileUtils.mkdir_p("#{tmpdir}/xdg/irb") + FileUtils.touch("#{tmpdir}/xdg/irb"+"/.irb#{IRB::IRBRC_EXT}") + # ENV["HOME"] .irbrc + FileUtils.touch(tmpdir+"/.irb#{IRB::IRBRC_EXT}") + # project level .irbrc + FileUtils.touch(project_dir+"/.irb#{IRB::IRBRC_EXT}") + IRB.conf[:RC_NAME_GENERATOR] = nil + assert_equal(project_dir+"/.irb#{IRB::IRBRC_EXT}", IRB.rc_file) + assert_equal(project_dir+"/.irb_history", IRB.rc_file("_history")) + end + end + end + def test_rc_file_in_subdir tmpdir = @tmpdir Dir.chdir(tmpdir) do