Hudsonにへっぽこパッチをあててみる

作者さんから「SubversionChangelog対応するよ」と言われ,嬉しさついでに他の懸念点をなんとかしてみる.


他の懸念とは,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;
}

わはは.かっこ悪ー.
まあ良い.これで,SubversionChangelogさえサポートされれば,Hudson自体は盤石の構えとなる.もうCIツールって言ったらHudsonだよねって言うくらいお気に入り.
#Albusは,とりあえず忘れとく.:-)