From 2bd2020831e848f07857405d28cf2fe4e5e90a32 Mon Sep 17 00:00:00 2001 From: YO4 Date: Sun, 20 Oct 2024 22:01:36 +0900 Subject: [PATCH 1/3] test_yamatanooroti: codepage on legacy conhost even if only display DBCS chars test_yamatanooroti: change console condepage on legacy conhost even if only display DBCS characters (no input DBCS) omit if changing codepage failed writing DBCS characters to legacy console displays '?' character. confirmed on Windows 11 dev VM (that has no codepage 932 on legacy mode enabled conhost) --- test/reline/yamatanooroti/test_rendering.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index e9f9ee66d2..b747998d9c 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -1220,7 +1220,12 @@ def test_simple_dialog_scrollbar_with_moving_to_left def test_dialog_with_fullwidth_chars ENV['RELINE_TEST_PROMPT'] = '> ' - start_terminal(20, 5, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(20, 5, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.') + else + start_terminal(20, 5, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end 6.times{ write('j') } assert_screen(<<~'EOC') Multi @@ -1237,7 +1242,12 @@ def test_dialog_with_fullwidth_chars def test_dialog_with_fullwidth_chars_split ENV['RELINE_TEST_PROMPT'] = '> ' - start_terminal(20, 6, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(20, 6, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.') + else + start_terminal(20, 6, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end 6.times{ write('j') } assert_screen(<<~'EOC') Multil From 820ab79c7e4d4cd2a02d6ad32b9b981e3a6d3e3a Mon Sep 17 00:00:00 2001 From: YO4 Date: Sun, 13 Oct 2024 20:53:58 +0900 Subject: [PATCH 2/3] test_yamatanooroti: change console condepage on legacy conhost omit if changing codepage failed because of console input (using ansi codepage) that has coderange out of console codepage is useless --- test/reline/yamatanooroti/test_rendering.rb | 42 ++++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index b747998d9c..5b0f66804c 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -89,7 +89,12 @@ def test_autowrap end def test_fullwidth - start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + else + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end write(":あ\n") assert_screen(<<~EOC) Multiline REPL. @@ -101,7 +106,12 @@ def test_fullwidth end def test_two_fullwidth - start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + else + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end write(":あい\n") assert_screen(<<~EOC) Multiline REPL. @@ -377,7 +387,12 @@ def test_clear_multiline_and_autowrap end def test_nearest_cursor - start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + else + start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end write("def ああ\n :いい\nend\C-pbb\C-pcc") assert_screen(<<~EOC) Multiline REPL. @@ -718,7 +733,12 @@ def test_auto_indent_when_inserting_line end def test_auto_indent_multibyte_insert_line - start_terminal(10, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(10, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.') + else + start_terminal(10, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end write "if true\n" write "あいうえお\n" 4.times { write "\C-b\C-b\C-b\C-b\e\r" } @@ -763,7 +783,12 @@ def test_suppress_auto_indent_just_after_pasted end def test_suppress_auto_indent_for_adding_newlines_in_pasting - start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.') + else + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end write("<<~Q\n") write("{\n #\n}") write("#") @@ -854,7 +879,12 @@ def test_meta_key end def test_not_meta_key - start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + unless Yamatanooroti.win? && Yamatanooroti.options.windows == :"legacy-conhost" + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.') + else + start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.', codepage: 932) + omit "codepage 932 not supported" if !codepage_success? + end write("おだんご") # "だ" in UTF-8 contains "\xA0" assert_screen(<<~EOC) Multiline REPL. From b383a37fdefc623d19c0e8b5daf3ddc889e3abc8 Mon Sep 17 00:00:00 2001 From: YO4 Date: Sat, 19 Oct 2024 22:49:16 +0900 Subject: [PATCH 3/3] test_yamatanooroti: avoid windows conhost behavior Non VT sequence supporting windows console has forced newline output when writing rightmost column of line. This may appear as an additional line break. Clearing screen to avoid this environment dependent behavior. --- test/reline/yamatanooroti/test_rendering.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index 5b0f66804c..1737b2ce04 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -1256,11 +1256,9 @@ def test_dialog_with_fullwidth_chars start_terminal(20, 5, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog fullwidth,scrollkey,scrollbar}, startup_message: 'Multiline REPL.', codepage: 932) omit "codepage 932 not supported" if !codepage_success? end + write("\C-l") 6.times{ write('j') } assert_screen(<<~'EOC') - Multi - line - REPL. > オー グ言▄