Project

General

Profile

Actions

Bug #7076

closed

TestUnicodeEscape#test_basic failure on Windows

Added by h.shirosaki (Hiroshi Shirosaki) over 11 years ago. Updated over 11 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-09-27 trunk 37040) [i386-mingw32]
Backport:
[ruby-core:47709]

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.

http://pastie.org/4688083

I got the following test failure with chcp 437 on Windows 7.

  1. 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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0