Bug #7140
closedTestWEBrickCGI#test_cgi fails on Windows with chcp 437
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
- 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.
Updated by usa (Usaku NAKAMURA) about 12 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) about 12 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.
Updated by Anonymous about 12 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]