summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/reline/general_io.rb6
-rw-r--r--test/reline/helper.rb26
-rw-r--r--test/reline/test_reline_key.rb1
3 files changed, 20 insertions, 13 deletions
diff --git a/lib/reline/general_io.rb b/lib/reline/general_io.rb
index dd2e87eaf0..eaae63f925 100644
--- a/lib/reline/general_io.rb
+++ b/lib/reline/general_io.rb
@@ -3,7 +3,11 @@ require 'io/wait'
class Reline::GeneralIO
def self.reset(encoding: nil)
@@pasting = false
- @@encoding = encoding
+ if encoding
+ @@encoding = encoding
+ elsif defined?(@@encoding)
+ remove_class_variable(:@@encoding)
+ end
end
def self.encoding
diff --git a/test/reline/helper.rb b/test/reline/helper.rb
index bb23893187..fb2262e7f5 100644
--- a/test/reline/helper.rb
+++ b/test/reline/helper.rb
@@ -21,21 +21,23 @@ end
module Reline
class <<self
def test_mode(ansi: false)
- remove_const('IOGate') if const_defined?('IOGate')
- const_set('IOGate', ansi ? Reline::ANSI : Reline::GeneralIO)
- if ENV['RELINE_TEST_ENCODING']
- encoding = Encoding.find(ENV['RELINE_TEST_ENCODING'])
- else
- encoding = Encoding::UTF_8
- end
- Reline::GeneralIO.reset(encoding: encoding) unless ansi
- core.config.instance_variable_set(:@test_mode, true)
- core.config.reset
+ @original_iogate = IOGate
+ remove_const('IOGate')
+ const_set('IOGate', ansi ? Reline::ANSI : Reline::GeneralIO)
+ if ENV['RELINE_TEST_ENCODING']
+ encoding = Encoding.find(ENV['RELINE_TEST_ENCODING'])
+ else
+ encoding = Encoding::UTF_8
+ end
+ Reline::GeneralIO.reset(encoding: encoding) unless ansi
+ core.config.instance_variable_set(:@test_mode, true)
+ core.config.reset
end
def test_reset
- remove_const('IOGate') if const_defined?('IOGate')
- const_set('IOGate', Reline::GeneralIO)
+ remove_const('IOGate')
+ const_set('IOGate', @original_iogate)
+ Reline::GeneralIO.reset
Reline.instance_variable_set(:@core, nil)
end
diff --git a/test/reline/test_reline_key.rb b/test/reline/test_reline_key.rb
index fb700a6f2e..7f9a11394a 100644
--- a/test/reline/test_reline_key.rb
+++ b/test/reline/test_reline_key.rb
@@ -3,6 +3,7 @@ require "reline"
class Reline::TestKey < Reline::TestCase
def setup
+ Reline.test_mode
end
def teardown