From b0ca1fc21bbb9dac65a3b3f7b5935e691ece1501 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Sat, 18 Jan 2020 21:22:24 +0100 Subject: Reline: Fix changed test results due to change to UTF-8 on Windows In commit f8ea2860b0cac1aec79978e6c44168802958e8af the Reline encoding for native windows console was changed to hardcoded UTF-8. This caused failures in reline and readline tests, but they were hidden, because parallel ruby tests incorrectly used Reline::ANSI as IOGate. Tests failures were raised in single process mode, but not with -j switch. This patch corrects encodings on native Windows console. --- test/readline/test_readline.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'test/readline/test_readline.rb') diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb index b77e3a0ead..a4b7cb4cc7 100644 --- a/test/readline/test_readline.rb +++ b/test/readline/test_readline.rb @@ -238,7 +238,7 @@ module BasetestReadline append_character = Readline.completion_append_character Readline.completion_append_character = "" completion_case_fold = Readline.completion_case_fold - locale = Encoding.find("locale") + locale = get_default_internal_encoding if locale == Encoding::UTF_8 enc1 = Encoding::EUC_JP else @@ -545,7 +545,7 @@ module BasetestReadline saved_completer_quote_characters = Readline.completer_quote_characters saved_completer_word_break_characters = Readline.completer_word_break_characters return unless Readline.respond_to?(:quoting_detection_proc=) - unless Encoding.find("locale") == Encoding::UTF_8 + unless Encoding.find("external") == Encoding::UTF_8 return if assert_under_utf8 skip 'this test needs UTF-8 locale' end @@ -595,7 +595,7 @@ module BasetestReadline Readline.output = null Readline.completion_proc = ->(text) do ['abcde', 'abc12'].map { |i| - i.encode(Encoding.default_external) + i.encode(get_default_internal_encoding) } end w.write("a\t\n") @@ -620,7 +620,7 @@ module BasetestReadline Readline.completion_append_character = '!' Readline.completion_proc = ->(text) do ['abcde'].map { |i| - i.encode(Encoding.default_external) + i.encode(get_default_internal_encoding) } end w.write("a\t\n") @@ -790,4 +790,12 @@ class TestRelineAsReadline < Test::Unit::TestCase use_lib_reline super end + + def get_default_internal_encoding + if RUBY_PLATFORM =~ /mswin|mingw/ + Encoding.default_internal || Encoding::UTF_8 + else + super + end + end end -- cgit v1.2.3