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.