diff --git a/test/reline/yamatanooroti/multiline_repl b/test/reline/yamatanooroti/multiline_repl index 4de3f81c47b571..f3a1097dd89153 100755 --- a/test/reline/yamatanooroti/multiline_repl +++ b/test/reline/yamatanooroti/multiline_repl @@ -54,6 +54,12 @@ opt.on('--autocomplete') { %w{String Struct Symbol ScriptError SyntaxError Signal} } } +opt.on('--autocomplete-long') { + Reline.autocompletion = true + Reline.completion_proc = lambda { |target, preposing = nil, postposing = nil| + %w{String Struct Symbol StopIteration SystemCallError SystemExit SystemStackError ScriptError SyntaxError Signal SizedQueue Set SecureRandom Socket StringIO StringScanner Shellwords Syslog Singleton SDBM} + } +} opt.parse!(ARGV) begin diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index 2ae0b81e2d1222..cd401e2f73dab2 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -870,6 +870,56 @@ def test_autocomplete EOC end + def test_autocomplete_long_with_scrollbar + start_terminal(20, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete-long}, startup_message: 'Multiline REPL.') + write("S") + close + assert_screen(<<~'EOC') + Multiline REPL. + prompt> S + String █ + Struct █ + Symbol █ + StopIteration █ + SystemCallError █ + SystemExit █ + SystemStackError█ + ScriptError █ + SyntaxError █ + Signal █ + SizedQueue █ + Set + SecureRandom + Socket + StringIO + EOC + end + + def test_autocomplete_long_with_scrollbar_scroll + start_terminal(20, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete-long}, startup_message: 'Multiline REPL.') + write("S" + "\C-i" * 16) + close + assert_screen(<<~'EOC') + Multiline REPL. + prompt> StringScanner + Struct ▄ + Symbol █ + StopIteration █ + SystemCallError █ + SystemExit █ + SystemStackError█ + ScriptError █ + SyntaxError █ + Signal █ + SizedQueue █ + Set █ + SecureRandom ▀ + Socket + StringIO + StringScanner + EOC + end + def write_inputrc(content) File.open(@inputrc_file, 'w') do |f| f.write content