Issue #7140 has been reported by h.shirosaki (Hiroshi Shirosaki).

----------------------------------------
Bug #7140: TestWEBrickCGI#test_cgi fails on Windows with chcp 437
https://bugs.ruby-lang.org/issues/7140

Author: h.shirosaki (Hiroshi Shirosaki)
Status: Open
Priority: Normal
Assignee: usa (Usaku NAKAMURA)
Category: 
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-10-09 trunk 37127) [i386-mingw32]


=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



-- 
http://bugs.ruby-lang.org/