From ee0f5d72cf00f40d5a311d9760b3d130fecfdaeb Mon Sep 17 00:00:00 2001 From: Ryan Schmitt Date: Wed, 15 Jul 2026 20:27:38 -0700 Subject: [PATCH] Fix Windows hang when stdin is redirected (#907) --- lib/reline/io.rb | 2 +- test/reline/test_reline.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/reline/io.rb b/lib/reline/io.rb index 17c3a3cd12..6a69f91b36 100644 --- a/lib/reline/io.rb +++ b/lib/reline/io.rb @@ -13,7 +13,7 @@ def self.decide_io_gate when /mswin|msys|mingw|cygwin|bccwin|wince|emc/ require 'reline/io/windows' io = Reline::Windows.new - if io.msys_tty? + if io.msys_tty? || !STDIN.tty? Reline::ANSI.new else io diff --git a/test/reline/test_reline.rb b/test/reline/test_reline.rb index 5b3e6178bd..49c736eb4a 100644 --- a/test/reline/test_reline.rb +++ b/test/reline/test_reline.rb @@ -418,6 +418,16 @@ def test_dumb_terminal assert_match(/#') } + rescue Timeout::Error + puts 'timeout' + end + RUBY + + IO.popen([Reline.test_rubybin, "-I#{lib}", "-rreline", "-e", code], "r+") do |io| + io.write stdin + io.close_write + io.read + end + end + def test_tty_ambiguous_width omit unless defined?(PTY) ruby_file = Tempfile.create('rubyfile')