diff --git a/lib/reline/general_io.rb b/lib/reline/general_io.rb index 2f87d718c66f5b..5df346882a3096 100644 --- a/lib/reline/general_io.rb +++ b/lib/reline/general_io.rb @@ -24,6 +24,7 @@ def self.set_default_key_bindings(_) end @@buf = [] + @@input = STDIN def self.input=(val) @@input = val diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb index 4949aec9220045..c783b56bfc23f5 100644 --- a/test/readline/test_readline.rb +++ b/test/readline/test_readline.rb @@ -3,6 +3,7 @@ require "test/unit" require "tempfile" require "timeout" +require "open3" module BasetestReadline INPUTRC = "INPUTRC" @@ -809,6 +810,19 @@ def test_completion_quote_character_after_completion Readline.completer_quote_characters = saved_completer_quote_characters if saved_completer_quote_characters end + def test_without_tty + loader = nil + if defined?(TestReadline) && self.class == TestReadline + loader = "use_ext_readline" + elsif defined?(TestRelineAsReadline) && self.class == TestRelineAsReadline + loader = "use_lib_reline" + end + if loader + res, exit_status = Open3.capture2e("ruby -I#{__dir__} -Ilib -rhelper -e '#{loader}; Readline.readline(%{y or n?})'", stdin_data: "y\n") + assert exit_status.success?, "It should work fine without tty, but it failed.\nError output:\n#{res}" + end + end + private def replace_stdio(stdin_path, stdout_path)