msfukuiの日記

おおまさのみみはそらのみみ。

会社の PC で 2 時間ほど悶々と悩んでたこと。

Windows7(32bit) + Cygwin(32bit) + ruby 1.9.3p484 + gem 2.2.2 です。

gem がエラーに..。

$ gem install selenium-webdriver test-unit
ERROR: While executing gem ... (ArgumentError)
invalid byte sequence in UTF-8

うーん..。と悩んで以下の記事を読みました。

Cygwin - Ruby-1.9.3p327 - win32/registry - PIB

とても詳しく書かれていてすっきり理解できました!
でも個別パッチになってしまうのですね..。
記事を参考に win32/registry.rb を直接編集して修正するとうまくいきました!

追記(12/29)

毎回編集内容を忘れるのでパッチ内容を追記します。
該当箇所は167行目から174行目にかけてです。
コメントアウトしているのが変更前です。


#FormatMessageA = Kernel32.extern "int FormatMessageA(int, void *, int, int, void *, int, void *)", :stdcall
FormatMessageW = Kernel32.extern "int FormatMessageW(int, void *, int, int, void *, int, void *)", :stdcall
def initialize(code)
@code = code
#msg = "\0".force_encoding(Encoding::ASCII_8BIT) * 1024
msg = "\0\0".force_encoding(Encoding::UTF_16LE) * 1024
#len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
len = FormatMessageW.call(0x1200, 0, code, 0, msg, msg.size, 0)
#msg = msg[0, len].force_encoding(Encoding.find(Encoding.locale_charmap))
msg = msg[0, len].encode(Encoding.find(Encoding.locale_charmap))
#super msg.tr("\r", '').chomp
super msg.tr("\r".encode(msg.encoding), '').chomp
end

selenium-webdriver がエラーに..。

test-unit(2.5.5) と selenium-webdriver(2.39.0) で、あるサイト向けの簡単な回帰テストのコードを書いていまして。

$ rake test
Loaded suite /usr/lib/ruby/gems/rake-10.1.1/lib/rake/rake_test_loader
Started
E
===================================================================
Error: test_sample(Sample)
Selenium::WebDriver::Error::WebDriverError: unexpected response, code=502, content-type="text/html"

...

うーん..。と悩んで以下の記事を見ました。

windows 7 - Watir-webdriver 64bit windows7 cannot open any browser with error unexpected response, code = 502, content-type = "text/html" - Stack Overflow

えっまさか、と思って、設定していた http_proxy の環境変数を unset して再実行すると..動くではありませんか!
普段の開発では proxy 使ってないので、気が付かなかった..。
なぜだー、という気持ちはあるのですが、今日は深堀する気力はもうないです。