Hudsonにへっぽこパッチをあててみる
作者さんから「SubversionのChangelog対応するよ」と言われ,嬉しさついでに他の懸念点をなんとかしてみる.
他の懸念とは,JUnitのテストレポート.テストメソッドに日本語使ってるのが,諸悪の根源なんだけど,これがHudsonと相性が悪い.いや,単にURLに日本語が混じっちゃうのがダメっぽいのだが...
実行環境は,FedoraにTomcat5.5なんで,例の通りSetCharacterEncodingFilterを追加すりゃ済むだろうと思ったら甘かった.これってQUERY STRINGにゃ効かないの?
仕方ないので,Hudson本体に手を出そうと探っていったら,Hudsonちゅうより,その土台になってるstaplerが対象っぽい感じ.
まったくの当てずっぽうなんだが,生成するURLにURLEncoderとURLDecoderを噛ませればなんとかなるのかなぁと.
とは言え,staplerのソースは手元に無いので,しかたなしにHudsonに手を入れる.すごくかっちょ悪いパッチになった.:-(
要は,テストメソッド名さえ解決すりゃいいので,ClassResultをピンポイントで直す.
public CaseResult getDynamic(String name, StaplerRequest req, StaplerResponse rsp) { for (CaseResult c : cases) { if(c.getSafeName().equals(name)) return c; } return null; }
これを,こう直した.
public CaseResult getDynamic(String name, StaplerRequest req, StaplerResponse rsp) { try { String _name = new String(name.getBytes("8859_1")); name = _name; } catch (Exception e) { } for (CaseResult c : cases) { if (c.getSafeName().equals(name)) return c; } return null; }
わはは.かっこ悪ー.
まあ良い.これで,SubversionのChangelogさえサポートされれば,Hudson自体は盤石の構えとなる.もうCIツールって言ったらHudsonだよねって言うくらいお気に入り.
#Albusは,とりあえず忘れとく.:-)