@@ -1795,16 +1795,47 @@ def test_thread_safe
17951795 close
17961796 end
17971797
1798+ def test_user_defined_winch
1799+ omit if Reline . core . io_gate . win?
1800+ pidfile = Tempfile . create ( 'pidfile' )
1801+ rubyfile = Tempfile . create ( 'rubyfile' )
1802+ rubyfile . write <<~RUBY
1803+ File.write(#{ pidfile . path . inspect } , Process.pid)
1804+ winch_called = false
1805+ Signal.trap(:WINCH, ->(_arg){ winch_called = true })
1806+ p Reline.readline('>')
1807+ puts "winch: \# {winch_called}"
1808+ RUBY
1809+ rubyfile . close
1810+
1811+ start_terminal ( 10 , 50 , %W{ ruby -I#{ @pwd } /lib -rreline #{ rubyfile . path } } )
1812+ assert_screen ( /^>/ )
1813+ write 'a'
1814+ assert_screen ( /^>a/ )
1815+ pid = pidfile . tap ( &:rewind ) . read . to_i
1816+ Process . kill ( :WINCH , pid ) unless pid . zero?
1817+ write "b\n "
1818+ assert_screen ( /"ab"\n winch: true/ )
1819+ close
1820+ ensure
1821+ File . delete ( rubyfile . path ) if rubyfile
1822+ pidfile . close if pidfile
1823+ File . delete ( pidfile . path ) if pidfile
1824+ end
1825+
17981826 def test_stop_continue
17991827 omit if Reline . core . io_gate . win?
18001828 pidfile = Tempfile . create ( 'pidfile' )
18011829 rubyfile = Tempfile . create ( 'rubyfile' )
18021830 rubyfile . write <<~RUBY
18031831 File.write(#{ pidfile . path . inspect } , Process.pid)
1804- p Reline.readmultiline('>'){false}
1832+ cont_called = false
1833+ Signal.trap(:CONT, ->(_arg){ cont_called = true })
1834+ Reline.readmultiline('>'){|input| input.match?(/ghi/) }
1835+ puts "cont: \# {cont_called}"
18051836 RUBY
18061837 rubyfile . close
1807- start_terminal ( 40 , 50 , [ 'bash' ] )
1838+ start_terminal ( 10 , 50 , [ 'bash' ] )
18081839 write "ruby -I#{ @pwd } /lib -rreline #{ rubyfile . path } \n "
18091840 assert_screen ( /^>/ )
18101841 write "abc\n def\n hi"
@@ -1814,6 +1845,8 @@ def test_stop_continue
18141845 assert_screen ( /fg\n .*>/m )
18151846 write "\e bg"
18161847 assert_screen ( />abc\n >def\n >ghi\n / )
1848+ write "\n "
1849+ assert_screen ( /cont: true/ )
18171850 close
18181851 ensure
18191852 File . delete ( rubyfile . path ) if rubyfile
0 commit comments