diff --git a/test/irb/helper.rb b/test/irb/helper.rb index acaf6277f..ea2c6ef16 100644 --- a/test/irb/helper.rb +++ b/test/irb/helper.rb @@ -49,6 +49,19 @@ def ruby_core? !Pathname(__dir__).join("../../", "irb.gemspec").exist? end + def setup_envs(home:) + @backup_home = ENV["HOME"] + ENV["HOME"] = home + @backup_xdg_config_home = ENV.delete("XDG_CONFIG_HOME") + @backup_irbrc = ENV.delete("IRBRC") + end + + def teardown_envs + ENV["HOME"] = @backup_home + ENV["XDG_CONFIG_HOME"] = @backup_xdg_config_home + ENV["IRBRC"] = @backup_irbrc + end + def save_encodings @default_encoding = [Encoding.default_external, Encoding.default_internal] @stdio_encodings = [STDIN, STDOUT, STDERR].map {|io| [io.external_encoding, io.internal_encoding] } diff --git a/test/irb/test_command.rb b/test/irb/test_command.rb index 30c3f5ca2..567c3216c 100644 --- a/test/irb/test_command.rb +++ b/test/irb/test_command.rb @@ -15,9 +15,7 @@ def setup Dir.mkdir(@tmpdir) end Dir.chdir(@tmpdir) - @home_backup = ENV["HOME"] - ENV["HOME"] = @tmpdir - @xdg_config_home_backup = ENV.delete("XDG_CONFIG_HOME") + setup_envs(home: @tmpdir) save_encodings IRB.instance_variable_get(:@CONF).clear IRB.instance_variable_set(:@existing_rc_name_generators, nil) @@ -25,8 +23,7 @@ def setup end def teardown - ENV["XDG_CONFIG_HOME"] = @xdg_config_home_backup - ENV["HOME"] = @home_backup + teardown_envs Dir.chdir(@pwd) FileUtils.rm_rf(@tmpdir) restore_encodings diff --git a/test/irb/test_history.rb b/test/irb/test_history.rb index 63be35fda..84f043892 100644 --- a/test/irb/test_history.rb +++ b/test/irb/test_history.rb @@ -12,19 +12,14 @@ class HistoryTest < TestCase def setup @original_verbose, $VERBOSE = $VERBOSE, nil @tmpdir = Dir.mktmpdir("test_irb_history_") - @backup_home = ENV["HOME"] - @backup_xdg_config_home = ENV.delete("XDG_CONFIG_HOME") - @backup_irbrc = ENV.delete("IRBRC") + setup_envs(home: @tmpdir) @backup_default_external = Encoding.default_external - ENV["HOME"] = @tmpdir IRB.instance_variable_set(:@existing_rc_name_generators, nil) end def teardown IRB.instance_variable_set(:@existing_rc_name_generators, nil) - ENV["HOME"] = @backup_home - ENV["XDG_CONFIG_HOME"] = @backup_xdg_config_home - ENV["IRBRC"] = @backup_irbrc + teardown_envs Encoding.default_external = @backup_default_external $VERBOSE = @original_verbose FileUtils.rm_rf(@tmpdir) diff --git a/test/irb/test_init.rb b/test/irb/test_init.rb index c423fa112..3e8d01c5c 100644 --- a/test/irb/test_init.rb +++ b/test/irb/test_init.rb @@ -270,17 +270,15 @@ def with_argv(argv) class ConfigValidationTest < TestCase def setup - @original_home = ENV["HOME"] - @original_irbrc = ENV["IRBRC"] # To prevent the test from using the user's .irbrc file - ENV["HOME"] = @home = Dir.mktmpdir + @home = Dir.mktmpdir + setup_envs(home: @home) super end def teardown super - ENV["IRBRC"] = @original_irbrc - ENV["HOME"] = @original_home + teardown_envs File.unlink(@irbrc) Dir.rmdir(@home) IRB.instance_variable_set(:@existing_rc_name_generators, nil)