Bug #7140

TestWEBrickCGI#test_cgi fails on Windows with chcp 437

Added by Hiroshi Shirosaki over 1 year ago. Updated over 1 year ago.

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

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#testcgi = 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

Associated revisions

Revision 37167
Added by shirosaki over 1 year ago

test_cgi.rb: skip a test on Windows

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

History

#1 Updated by Usaku NAKAMURA over 1 year 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.

#2 Updated by Hiroshi Shirosaki over 1 year 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.

#3 Updated by Anonymous over 1 year 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/testcgi.rb (TestWEBrickCGI#testcgi): skip a test depending on locale on Windows. ENV[] doesn't work properly if console code page is not equal to file system encoding. [Bug #7140]

Also available in: Atom PDF