Bug #7076
closedTestUnicodeEscape#test_basic failure on Windows
Description
=begin
This was originally reported at rubyinstaller-list by Jon.
With chcp 437, TestUnicodeEscape#test_basic fails with invalid byte sequence in UTF-8.
I got the following test failure with chcp 437 on Windows 7.
- Failure:
test_basic(TestUnicodeEscape) [c:/Users/hiroshi/work/ruby/test/ruby/test_unicode_escape.rb:50]:
Expected /^("?)\u00FC\1$/ to match ""??"\n".
echo command on Windows seems not to work properly against non-ascii characters with all code page.
I suggest a patch to use ruby instead of echo.
This patch works fine with chcp 437, 1252 and 65001. Jon also confirmed this.
diff --git a/test/ruby/test_unicode_escape.rb b/test/ruby/test_unicode_escape.rb
index 088f81c..2c437d9 100644
--- a/test/ruby/test_unicode_escape.rb
+++ b/test/ruby/test_unicode_escape.rb
@@ -1,6 +1,7 @@
-- coding: utf-8 --¶
require 'test/unit'
+require_relative 'envutil'
class TestUnicodeEscape < Test::Unit::TestCase
def test_basic
@@ -47,7 +48,7 @@ EOS
# \u in %x strings
assert_match(/^("?)A\1$/, echo "\u0041"
) #"
assert_match(/^("?)A\1$/, %x{echo "\u0041"}) #"
- assert_match(/^("?)ü\1$/,
echo "\u{FC}"
.force_encoding("utf-8")) #"
-
assert_match(/^("?)ü\1$/,
#{EnvUtil.rubybin} -e "puts \\"\u{FC}\\""
.force_encoding("utf-8")) #"\u in quoted symbols¶
assert_equal(:A, :"\u0041")=end