summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authortomoya ishida <[email protected]>2024-12-01 02:21:17 +0900
committergit <[email protected]>2024-11-30 17:21:20 +0000
commit0fc70022e694da2c8c6ee5dbde2de24b2a389d93 (patch)
treed60222303cd21cf0bce75b9eb1a2eaf7f695f04a /test
parent569f27b4259f0d11e0291f28528a5c9de1249a44 (diff)
[ruby/reline] Call user defined sigwinch and sigcont handler
(https://github.com/ruby/reline/pull/788) https://github.com/ruby/reline/commit/7d44770c84
Diffstat (limited to 'test')
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb37
1 files changed, 35 insertions, 2 deletions
diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb
index 657a071eb9..93bec515d1 100644
--- a/test/reline/yamatanooroti/test_rendering.rb
+++ b/test/reline/yamatanooroti/test_rendering.rb
@@ -1795,16 +1795,47 @@ begin
close
end
+ def test_user_defined_winch
+ omit if Reline.core.io_gate.win?
+ pidfile = Tempfile.create('pidfile')
+ rubyfile = Tempfile.create('rubyfile')
+ rubyfile.write <<~RUBY
+ File.write(#{pidfile.path.inspect}, Process.pid)
+ winch_called = false
+ Signal.trap(:WINCH, ->(_arg){ winch_called = true })
+ p Reline.readline('>')
+ puts "winch: \#{winch_called}"
+ RUBY
+ rubyfile.close
+
+ start_terminal(10, 50, %W{ruby -I#{@pwd}/lib -rreline #{rubyfile.path}})
+ assert_screen(/^>/)
+ write 'a'
+ assert_screen(/^>a/)
+ pid = pidfile.tap(&:rewind).read.to_i
+ Process.kill(:WINCH, pid) unless pid.zero?
+ write "b\n"
+ assert_screen(/"ab"\nwinch: true/)
+ close
+ ensure
+ File.delete(rubyfile.path) if rubyfile
+ pidfile.close if pidfile
+ File.delete(pidfile.path) if pidfile
+ end
+
def test_stop_continue
omit if Reline.core.io_gate.win?
pidfile = Tempfile.create('pidfile')
rubyfile = Tempfile.create('rubyfile')
rubyfile.write <<~RUBY
File.write(#{pidfile.path.inspect}, Process.pid)
- p Reline.readmultiline('>'){false}
+ cont_called = false
+ Signal.trap(:CONT, ->(_arg){ cont_called = true })
+ Reline.readmultiline('>'){|input| input.match?(/ghi/) }
+ puts "cont: \#{cont_called}"
RUBY
rubyfile.close
- start_terminal(40, 50, ['bash'])
+ start_terminal(10, 50, ['bash'])
write "ruby -I#{@pwd}/lib -rreline #{rubyfile.path}\n"
assert_screen(/^>/)
write "abc\ndef\nhi"
@@ -1814,6 +1845,8 @@ begin
assert_screen(/fg\n.*>/m)
write "\ebg"
assert_screen(/>abc\n>def\n>ghi\n/)
+ write "\n"
+ assert_screen(/cont: true/)
close
ensure
File.delete(rubyfile.path) if rubyfile