Project

General

Profile

Actions

Bug #7140

closed

TestWEBrickCGI#test_cgi fails on Windows with chcp 437

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

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2012-10-09 trunk 37127) [i386-mingw32]
Backport:
[ruby-core:47910]

Description

=begin
Webrick test fails with chcp 437 on Windows mingw reported by Jon.

https://gist.github.com/3859711#gistcomment-585563

C:\Jenkins\workspace>chcp 437
Active code page: 437

C:\Jenkins\workspace>ruby -I ruby-trunk-svn\test\webrick ruby-trunk-svn\test\webrick\test_cgi.rb
Run options:

Running tests:

[4/4] TestWEBrickCGI#test_cgi = 1.22 s

  1. Failure:
    test_cgi(TestWEBrickCGI) [ruby-trunk-svn/test/webrick/test_cgi.rb:41]:
    webrick log start:
    [2012-10-10 20:42:33] INFO WEBrick 1.3.1
    [2012-10-10 20:42:33] INFO ruby 2.0.0 (2012-10-09) [i386-mingw32]
    [2012-10-10 20:42:33] INFO WEBrick::HTTPServer#start: pid=1620 port=50961

webrick log end.
"/\xA4\xDB\xA4\xB2/\xA4\xDB\xA4\xB2" expected but was
"/\xC2\xA4\xC3\x9B\xC2\xA4\xC2\xB2/\xC2\xA4\xC3\x9B\xC2\xA4\xC2\xB2".

Finished tests in 1.578090s, 2.5347 tests/s, 11.4062 assertions/s.
4 tests, 18 assertions, 1 failures, 0 errors, 0 skips

ruby -v: ruby 2.0.0dev (2012-10-09 trunk 37127) [i386-mingw32]

This is due to ENV[] returns different value with chcp 437.

Test on my machine with chcp 437.

sh-3.1$ ./miniruby -e 'ENV["a"] = "/\xA4\xDB\xA4\xB2/\xA4\xDB\xA4\xB2"; p ENV["a"]'
"/\xEF\xBD\xA4\xEF\xBE\x9B\xEF\xBD\xA4\xEF\xBD\xB2/\xEF\xBD\xA4\xEF\xBE\x9B\xEF\xBD\xA4\xEF\xBD\xB2"

This spec seems to be changed by #5570 (r35030).

If I changed ENV not to use UTF-8 conversion like the following patch, the test didn't fail.

https://gist.github.com/3859711#file_fix_env_encoding.patch

But the patch would break #5570 fix since the filesystem encoding is forced upon environment variables.
So far I don't know fixes to pass the test and support #5570. Are there any good ways?

I would suggest to skip the test if locale encoding is not proper on Windows.
Here is a patch.

https://gist.github.com/3869593
=end

Updated by usa (Usaku NAKAMURA) over 11 years ago

  • Status changed from Open to Assigned

I can't make the decision to change the encoding of ENV now.
In future version -- 3.0? -- we will be able to change it.

So, we should make a work around by changing test.
Please commit it.

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

usa (Usaku NAKAMURA) wrote:

I can't make the decision to change the encoding of ENV now.
In future version -- 3.0? -- we will be able to change it.

Is that means changing the encoding of ENV will solve the following inconsistency between input and output?

sh-3.1$ ./miniruby -e 'ENV["a"] = "/\xA4\xDB\xA4\xB2/\xA4\xDB\xA4\xB2"; p ENV["a"]'
"/\xEF\xBD\xA4\xEF\xBE\x9B\xEF\xBD\xA4\xEF\xBD\xB2/\xEF\xBD\xA4\xEF\xBE\x9B\xEF\xBD\xA4\xEF\xBD\xB2"

So, we should make a work around by changing test.
Please commit it.

Thanks. I'll commit it later.

Actions #3

Updated by Anonymous over 11 years ago

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

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


test_cgi.rb: skip a test on Windows

  • test/webrick/test_cgi.rb (TestWEBrickCGI#test_cgi): skip a test
    depending on locale on Windows. ENV[] doesn't work properly if
    console code page is not equal to file system encoding.
    [ruby-core:47910] [Bug #7140]
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0