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

Updated by usa (Usaku NAKAMURA) over 11 years ago

Hello,

In message "[ruby-core:47709] [ruby-trunk - Bug #7076][Open] TestUnicodeEscape#test_basic failure on Windows"
on Sep.27,2012 21:44:25, wrote:

This patch works fine with chcp 437, 1252 and 65001. Jon also confirmed this.

So, commit it, please.

Generally, you can commit a patch by judgment of you, as long as
it does not change the specification.
If it is change of tests like this time, please do not hesitate to do.

Regards,

U.Nakamura

Actions #2

Updated by Anonymous over 11 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r37050.
Hiroshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


test_unicode_escape.rb: fix test for Windows

  • test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
    echo command doesn't work properly against non-ascii character on
    Windows with chcp 437. Instead we use ruby.
    [ruby-core:47709] [Bug #7076]

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

On Fri, Sep 28, 2012 at 9:49 AM, U.Nakamura wrote:

Hello,

In message "[ruby-core:47709] [ruby-trunk - Bug #7076][Open] TestUnicodeEscape#test_basic failure on Windows"
on Sep.27,2012 21:44:25, wrote:

This patch works fine with chcp 437, 1252 and 65001. Jon also confirmed this.

So, commit it, please.

Generally, you can commit a patch by judgment of you, as long as
it does not change the specification.
If it is change of tests like this time, please do not hesitate to do.

Hello,

Thank you for comments. The patch had a problem, but I think it was fixed.

And I have other patches for test issues which I see on my local. So
committed those.
With those patches test-all results seems fine even on Windows XP with
gcc version 4.7.2 rubenvb build.

--
Hiroshi Shirosaki

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0