diff options
-rw-r--r-- | lib/highline.rb | 1 | ||||
-rw-r--r-- | lib/highline/io_console_compatible.rb | 2 | ||||
-rw-r--r-- | lib/highline/terminal/io_console.rb | 2 | ||||
-rwxr-xr-x | test/test_highline.rb | 14 |
4 files changed, 17 insertions, 2 deletions
diff --git a/lib/highline.rb b/lib/highline.rb index 3e60cd3..47df4be 100644 --- a/lib/highline.rb +++ b/lib/highline.rb @@ -538,6 +538,7 @@ class HighLine terminal.raw_no_echo_mode_exec do loop do character = terminal.get_character + raise Interrupt if character == "\u0003" break unless character break if ["\n", "\r"].include? character diff --git a/lib/highline/io_console_compatible.rb b/lib/highline/io_console_compatible.rb index 7ff06f5..7fa388c 100644 --- a/lib/highline/io_console_compatible.rb +++ b/lib/highline/io_console_compatible.rb @@ -13,7 +13,7 @@ require "tempfile" # module IOConsoleCompatible - def getch + def getch(min:nil, time:nil, intr: nil) getc end diff --git a/lib/highline/terminal/io_console.rb b/lib/highline/terminal/io_console.rb index d28ee0d..9374f09 100644 --- a/lib/highline/terminal/io_console.rb +++ b/lib/highline/terminal/io_console.rb @@ -27,7 +27,7 @@ class HighLine # (see Terminal#get_character) def get_character - input.getch # from ruby io/console + input.getch(intr: true) # from ruby io/console rescue Errno::ENOTTY input.getc end diff --git a/test/test_highline.rb b/test/test_highline.rb index 8de8551..a5c4e26 100755 --- a/test/test_highline.rb +++ b/test/test_highline.rb @@ -1300,6 +1300,20 @@ class TestHighLine < Minitest::Test assert_equal("maçã", answer) end + def test_echo_false_with_ctrl_c_interrupts + @input << "String with a ctrl-c at the end \u0003 \n" + @input.rewind + @answer = nil + + assert_raises(Interrupt) do + @answer = @terminal.ask("Type: ") do |q| + q.echo = false + end + end + + assert_nil @answer + end + def test_range_requirements @input << "112\n-541\n28\n" @input.rewind |