@@ -1795,16 +1795,47 @@ def test_thread_safe
1795
1795
close
1796
1796
end
1797
1797
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
+
1798
1826
def test_stop_continue
1799
1827
omit if Reline . core . io_gate . win?
1800
1828
pidfile = Tempfile . create ( 'pidfile' )
1801
1829
rubyfile = Tempfile . create ( 'rubyfile' )
1802
1830
rubyfile . write <<~RUBY
1803
1831
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}"
1805
1836
RUBY
1806
1837
rubyfile . close
1807
- start_terminal ( 40 , 50 , [ 'bash' ] )
1838
+ start_terminal ( 10 , 50 , [ 'bash' ] )
1808
1839
write "ruby -I#{ @pwd } /lib -rreline #{ rubyfile . path } \n "
1809
1840
assert_screen ( /^>/ )
1810
1841
write "abc\n def\n hi"
@@ -1814,6 +1845,8 @@ def test_stop_continue
1814
1845
assert_screen ( /fg\n .*>/m )
1815
1846
write "\e bg"
1816
1847
assert_screen ( />abc\n >def\n >ghi\n / )
1848
+ write "\n "
1849
+ assert_screen ( /cont: true/ )
1817
1850
close
1818
1851
ensure
1819
1852
File . delete ( rubyfile . path ) if rubyfile
0 commit comments