忍者ブログ
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

DATE : 2017/05/25 (Thu)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2008/10/16 (Thu)

はじめに

Hudson では、Java 以外の言語で作られたプロジェクトの継続的インテグレーションを行うことができます。特に、テスト結果のログを JUnit 形式の XML で出力できる場合、テスト結果の管理もできるので便利です。本記事では、unittest モジュールを用いてユニットテストを行っている Python プロジェクトのテスト結果を Hudson で管理させる方法についてメモします。Python プロジェクトはすでに Hudson に登録できている状態だとします。Hudson でプロジェクトを管理する方法については、「Hudsonを使ったアジャイルな開発入門」(川口耕介、gihyo.jp)を参考にしてください。本記事で使用した Hudson のバージョンは 1.255、Python のバージョンは 2.6 です。

unittest モジュールの結果から、JUnit 形式のログファイルを出力

unittest モジュールは、標準では JUnit 形式のログを出力しません。そこで、Sebastian Rittau 氏が開発された XML Test Runner for PyUnit を使用します。「XML Test Runner」から xmlrunner.py をダウンロードし、プロジェクトのフォルダか <Python のインストールフォルダ>\Lib に配置します。次に、テストを実行するスクリプトを作成します。例えば、test_on_hudson.py というスクリプトに以下のように記述します(「<...>」の部分は、各自のテスト用スクリプトに応じて置き換えてください)。なお、以下のコードは「Hudson embraces Python」(Redsolo)のものを参考にしています。対象とする XML Test Runner for PyUnit は、2007-11-12 版のものです。

import sys
import unittest
import xmlrunner
import <テスト対象モジュール>

if __name__ == "__main__":
    suite = unittest.TestSuite([
        unittest.TestLoader().loadTestsFromTestCase(<テストケース>),
        <その他テストケース>
        ])

    runner = xmlrunner.XMLTestRunner(sys.stdout)
    runner.run(suite)

テストを実行するスクリプトが出来上がったら、Hudson に登録しておきます。

ビルド手順にユニットテストの起動を指定

プロジェクトページの「設定」→「ビルド手順の追加」から、ユニットテストを起動するスクリプトを実行します。例えば、「Windows バッチコマンドの実行」からユニットテストを起動する場合は、次のようになります。

python <ワークスペースからの test_on_hudson.py のパス> > testlog.xml

「Ant の呼び出し」の場合の Ant スクリプトは、次のようになります。各プロパティは各自のプロジェクトに応じて置き換えてください。hudson.WORKSPACE プロパティは、Hudson から提供される環境変数で、Hudson の上のプロジェクトのワークスペースフォルダを表します。以下の Ant スクリプトでは、ログファイルを <プロジェクトのワークスペース>/logs に「PYUNIT-<ビルドタグ>.xml」という名前で出力します。この Ant スクリプトは、「Ant の呼び出し」→「高度な設定」→「ビルドファイル」にこのファイルのパスを指定するだけで使えます。

<?xml version="1.0" encoding="utf-8"?>

<project name="unittestOnHudson" default="test" basedir=".">
  <description>
    Python プロジェクトのユニットテストを Hudson 上で実行する。
  </description>
  <property environment="hudson"/>

  <!-- テスト用コードのパス -->
  <property name="testCode"
            location="${hudson.WORKSPACE}/sample/test_on_hudson.py"/>
  <!-- ログを出力するディレクトリのパス -->
  <property name="logsDirectory"
            location="${hudson.WORKSPACE}/logs"/>
  <!-- ログファイルの名前 -->
  <property name="logName"
            value="PYUNIT-${hudson.BUILD_TAG}.xml"/>

  <target name="test">
    <mkdir dir="${logsDirectory}"/>
    <delete includeemptydirs="true">
      <fileset dir="${logsDirectory}" includes="**/*"/>
    </delete>
    <exec executable="python" output="${logsDirectory}/${logName}">
      <arg path="${testCode}"/>
    </exec>
  </target>

</project>

あとは、「ビルド後の処理」の「JUnitテスト結果の集計」にチェックを入れ、「テスト結果 XML」に出力されるログファイルのパターンを記述すれば完了です。上記の「Windows バッチコマンドの実行」の場合は、「テスト結果 XML」に「testlog.xml」を、「Ant の呼び出し」の場合は「logs/PYUNIT-*.xml」を指定してください。

参考文献


DATE : 2008/10/13 (Mon)

はじめに

JavaScript 向けテスティングフレームワーク JSUnit は、現在のバージョン(2.2alpha11)では Firefox 3 上で動作しない場合があります。Firefox 3 では、ローカルにあるファイルを Firefox に読み込んだ際に、そのファイルからアクセスできるディレクトリに制限が設けられています。標準では、読み込んだファイルと同じディレクトリかそのサブディレクトリしかアクセスすることができません。テストを起動する TestRunner とテスト用のページとが別の階層のディレクトリにあると、TestRunner からテスト用のページにアクセスできなくなってしまいます。

Firefox 3 の「security.fileuri.strict_origin_policy」設定を false に変える

その制限を解除するために「security.fileuri.strict_origin_policy」設定を変更します。この設定は読み込まれたローカルのファイルからアクセスできるディレクトリの制限を設定するもので、標準では同じディレクトリかそのサブディレクトリ(true)に設定されています。そこで、「about:config」を開き、「security.fileuri.strict_origin_policy」設定を false に設定します。こうすることで、ローカルのファイルからアクセスできるディレクトリに制限がなくなります。この結果、TestRunner とテスト用のページとが別の階層のディレクトリにあっても JSUnit を使用できるようになります。

ただし、この設定の変更は Firefox 3 のセキュリティ設定を緩めてしまうことになります。余裕があれば、開発作業用のプロファイルを作成することをおすすめします。

テスト対象ページを testPage パラメータで指定する

TestRunner にあるファイルを選択するボタンも、Firefox 3 上ではうまく動作しません。その場合、TestRunner の URL の後に、「?testPage=C:/abcd/efg.html」(「/」は「\」でもかまいません)という風に testPage パラメータを付けて、そこでテストページ、またはテストスイートのページを指定します。

注意

なお、JSUnit はテストメソッドの間違いがあれば指摘してくれますが、テストページの HTML の記述が間違えていた場合やテストの構成に失敗していた場合には何も警告を出しません。上記の操作を行った上でも何も変化がない場合は、テストコードを HTML 部分も含めてチェックしてください。

(;^ω^)始めの問題が解決した後に、テストコードの構成の間違いでまたしばらく時間を費やしてしまいました。

参考文献


DATE : 2008/09/19 (Fri)

Twitter を使用して早1ヶ月以上が経ちました。初めはインスタントメッセンジャー(以下、IM)経由で使用していたのですが、Twitter 側の障害により、Web のインタフェースを使わなければならない状況になってしまいました。

Web のインタフェースも使い心地は悪くないのですが、IM を使っていた頃と違って、フォロー数、被フォロー数が常に目に入るようになってしまいました。いくら気にしないように心がけていても、やはり数字の増減は気になってしまいます。

ということで、フォロー数、被フォロー数をウェブのインタフェースで非表示にする Firefox 3 用のユーザスタイルシートを書いてみました。IM が完全に復活するまでの暫定的なものなので、フォロー、被フォローへのリンクも丸ごと非表示にします。

なお、ユーザスタイルシート中の your_name の部分は、Twitter での自分のユーザ名に置き換えてください。

更新履歴

2008/09/19
Twitter のデザイン変更で「設定」→「デザイン」の部分に表示されてしまう問題に対処。
2008/07/25
「ダイレクトメッセージ」ページでの非表示化が抜けていたのを修正。
2008/06/29
「お気に入り」ページでの非表示化が抜けていたのを修正。
2008/06/25
公開。

Firefox 3 用ユーザスタイルシート

/* Version : 2008/09/19 */
@-moz-document
        url-prefix(http://twitter.com/your_name), /* 自分のユーザ名を含むページ */
        url-prefix(https://twitter.com/your_name),

        url-prefix(http://twitter.com/home),
        url-prefix(http://twitter.com/replies),
        url-prefix(http://twitter.com/account),
        url-prefix(http://twitter.com/public_timeline),
        url-prefix(http://twitter.com/favorites),
        url-prefix(http://twitter.com/direct_messages),
        url-prefix(https://twitter.com/home),
        url-prefix(https://twitter.com/replies),
        url-prefix(https://twitter.com/account),
        url-prefix(https://twitter.com/public_timeline),
        url-prefix(https://twitter.com/favorites),
        url-prefix(https://twitter.com/direct_messages) {
    a[href$="/followers"], a[href$="/friends"],
            #following_count, #followingcount,
            #follower_count, #followers_count {
        display : none;
    }
}

DATE : 2008/09/02 (Tue)

高岡市美術館の企画展で「高岡開町400年記念プレイベント ピカソ展 -天才・もうひとつの顔-」が開催されていたので、見に行ってきました。また、万葉の杜にある「ドラえもんの散歩道」も見に行ってきました。

高岡駅の北に出て、そのまま北に商店街を進むと、徒歩約5分程度で万葉の杜が右手に見えてきました。小さく静かな公園で、正面から奥にかけてドラえもん、のび太、しずか、スネ夫、ジャイアンと、「ドラえもん」のキャラクターの像の乗った柱が続いています。また入口から少し入ったところにある左側の茂みには、「ドラえもん」作者、藤子・F・不二雄のメッセージが刻まれた銅板が置かれていました。平日の午前中ともあって、到着した当初は人もほとんどいません。けれど、万葉の杜を歩き回ったり、写真を撮っていたりするうち、私の他にも「ドラえもんの散歩道」の写真を撮って行かれる方が現れました。親子連れの方も万葉の杜にやってきて、ドラえもんの像に目を輝かせていたりと、とても和やかな雰囲気に包まれていました。

万葉の杜を出て大和高岡店の方へ道なりに歩いていくと、広大な森と堀に囲まれた高岡古城公園が見えてきました。その高岡古城公園を過ぎると、高岡市美術館にたどり着きます。高岡市美術館には、かつて一度、「THE ドラえもん展」を見に行ったことがありました。「THE ドラえもん展」は2004年7~9月だったため、4年ぶりに訪れたことになります。

平日のため人も少ないと思っていたのですが、意外にも来場者が多く、驚きました。まさに列を作って歩いていく状態で、なかなかじっくりとピカソを鑑賞できる雰囲気ではなかったものの、ときおり感嘆の声が上がったり、自分なりの解釈を話し合っている声が聞こえてきたりと、とても良い雰囲気でした。会場に展示されていたのは、ピカソの陶芸に始まり、版画、油彩といった顔ぶれでした。非常に単純な線描から描かれる迫力には心を揺さぶられました。ぱっと見ると子供の描いたような絵なのですが、無駄のない線や点の数々は、さすがの一言に尽きます。また、皿の表には簡単な模様だけ描いておいて、裏に細かく描かれた作品などもあり、遊び心が垣間見えて微笑ましくありました。作品とともに、ピカソの制作・生活風景を撮影した写真も飾られており、どのような雰囲気の中で作品作りに取り組んでいたのかも感じられ、非常に面白かったです。

ピカソを美術館で見るのは初めてでしたが、媒体や表現技法を様々に変えながらも亡くなる直前まで創作活動を行った点には頭が下がる思いでした。芸術作品を鑑賞する際、どうしても絵は絵として、陶芸は陶芸として、特定の表現技法は表現技法として見がちなのですが、ピカソにとって見れば表現したいものをただ追い求めた結果だったのかもしれません。


DATE : 2008/07/19 (Sat)

Pidginから Twitter を利用する際に便利な機能を提供する pidgin-twitter プラグインyaz さんによって公開されています。このプラグインを、Windows でビルドしてみました。本記事では、ビルドの方法をメモしておきます。なお、対象とする pidgin-twitter プラグインのバージョンは 0.7、Pidgin のバージョンは 2.4.3 です。

なお、Windows 版のバイナリはnosuke さんが公開されています。

Pidgin のビルド環境を整える

pidgin-twitter プラグインのビルドには、Pidgin を Windows でビルドできる環境が必要です。

Pidgin をビルドする環境を整えるには、Windows/Pidginをビルドしてみる/ビルド手順/pidgin-2.4.3Pidgin for Windows Build Instructions が参考になります。特に、後者のページは、必要となるライブラリへのリンクがあるので重宝します。

まずは、上記のページを見て Pidgin をビルドする直前まで準備を進めます。

Pidgin 公式の GTK+ パッケージと、最新版の GTK+ パッケージを入手する

このまま Pidgin のビルドを行いたいところですが、pidgin-twitter プラグインが対象とする GLib のバージョンは 2.14.0 以上となっており、上記のページで使用する GTK+ 2.6.10 は GLib のバージョンが古いため使用できません。

そこで、Pidgin for Windows Build Instructions - Install Pidgin's build dependencies - GTK+ から入手できる GTK+ 2.6.10 パッケージに加えて、GTK+ Download for Windows から、GLib や GTK+ など、「Dev」と書かれたパッケージをすべて入手します(本記事執筆時点の GLib のバージョンは 2.16.3、GTK+ のバージョンは 2.12.9 でした。他のパッケージのバージョンは省略します)。「Dev」と書かれたパッケージがない場合は、「Binaries」と書かれたものを入手します。ここで入手したパッケージは、Windows/Pidginをビルドしてみる/ビルド手順/pidgin-2.4.3 にあるように、win32-dev 以下に gtk_2_0 として配置してください(すでに GTK+ 2.6.10 を配置している場合は、配置した GTK+ 2.6.10 を削除するか、名前を適当に変えてください)。GLib や GTK+ などに依存するライブラリを配置する際に、同名のファイルを上書きするかどうか問われることがありますが、とりあえずサイズの大きな方を残しておけば問題ありませんでした。

なお、GTK+ Download for Windows から入手できる zlib 1.2.3 には、zlib1.dll は付属しているものの、libz.a などは付属していません。Pidgin をビルドする際には libz.a が必要となるため、libz 関係のファイルは Pidgin for Windows Build Instructions - Install Pidgin's build dependencies - GTK+ から入手できる GTK+ 2.6.10 パッケージに付属するものを使用します。GTK+ 2.6.10 のパッケージを解凍すると、gtk_2_0 フォルダが出てきます。gtk_2_0\lib 以下の、ファイル名の先頭が libz ファイル全てを win32-dev\gtk_2_0\lib フォルダにコピーします。

GetText for Windows を入手する

Pidgin 公式の GTK+ パッケージ(GTK+ 2.6.10)と GTK+ Download for Windowsから入手した最新の GTK+ パッケージ(GTK+ 2.12.9)比較すると、前者には GNU GetText のコマンド類が含まれていますが、後者には含まれていません。

そこで、GnuWin32 プロジェクトが提供する GetText for Windows を入手します。「Complete package, except sources」を選び、GetText for Windows をインストールします。インストール先にあるフォルダ(bin、libなど)をすべて、win32-dev\gtk_2_0 にコピーします。

MinGW の gcc が使用されるかどうか確認する

Pidgin のビルドには、MinGW の gcc を使用します。以下のコマンドを実行して、gcc に MinGW のものが使用されるかどうか確認してください。(「$」はプロンプトです)

$ which gcc

MinGW をインストールしたパスが結果に含まれていれば、MinGW の gcc が使用されます。Cygwin の gcc が使用されている場合は、Cygwin の gcc をアンインストールしてください。

(;^ω^)Cygwin の gcc を使用すると、Pidgin のビルドの途中で「undefined reference to `__errno'」というエラーが発生してビルドが失敗してしまいます。

pidgin-2.4.3\pidgin\plugins\perl\common\Makefile.mingw を修正する

以上で Pidgin をビルドできる環境は整いましたが、pidgin-2.4.3/pidgin/plugins/perl/common/Makefile.mingw に間違いがあるため、ビルドは失敗します。pidgin-2.4.3\pidgin\plugins\perl\common\Makefile.mingw を開き、18行目から始まる「INCLUDE_PATHS」マクロに「-I$(GTK_TOP)/include/cairo」を追加します。以下に、追加後の「INCLUDE_PATHS」マクロを示します。

INCLUDE_PATHS =		-I. \
			-I$(PIDGIN_TREE_TOP) \
			-I$(PURPLE_TOP) \
			-I$(PURPLE_TOP)/win32 \
			-I$(PIDGIN_TOP) \
			-I$(PIDGIN_TOP)/win32 \
			-I$(GTK_TOP)/include \
			-I$(GTK_TOP)/include/atk-1.0 \
			-I$(GTK_TOP)/include/glib-2.0 \
			-I$(GTK_TOP)/include/gtk-2.0 \
			-I$(GTK_TOP)/include/pango-1.0 \
			-I$(GTK_TOP)/include/cairo \
			-I$(GTK_TOP)/lib/glib-2.0/include \
			-I$(GTK_TOP)/lib/gtk-2.0/include \
			-I$(PERL_LIB_TOP)/CORE

Pidgin をビルドする

以上で、Pidgin 2.4.3 を GTK+ 2.12.9 でビルドする環境が整いました。

正しくビルドできるかどうか、pidgin-2.4.3 にカレントディレクトリを移動して実際にビルドして確かめておきます。

$ make -f Makefile.mingw install

pidgin-twitter プラグインをビルドする

pidgin-twitter プラグインは、C で書かれています。C で書かれたプラグインのビルドには、Basic C Plugin How-To - Compile, Install, and Load the Hello, World! Plugin の文書が役に立ちます。

pidgin-2.4.3\pidgin\plugins\Makefile.mingw を修正する

C で書かれたプラグインを Windows 環境でビルドするには、pidgin-2.4.3\pidgin\plugins\Makefile.mingw という Makefile を使用します。ところが、pidgin-twitter プラグインをビルドするのに必要なライブラリ libxml2 が、この Makefile.mingw には設定されていません。

そこで、pidgin-2.4.3\pidgin\plugins\Makefile.mingw を開き、

  • 21行目から始まる「INCLUDE_PATHS」マクロに「-I../../../win32-dev/libxml2-2.6.30/include」
  • 36行目から始まる「LIB_PATHS」マクロに「-L../../../win32-dev/libxml2-2.6.30/lib」
  • 43行目から始まる「LIBS」マクロに「-lxml2」

を追加します。

pidgin-twitter プラグインのビルド

まず、pidgin-twitter プラグインのパッケージの中から、pidgin-twitter.c, pidgin-twitter.h を pidgin-2.4.3\pidgin\plugins にコピーします。

カレントディレクトリを pidgin-2.4.3/pidgin/plugins に移して、プラグインのビルドを行います。

$ make -f Makefile.mingw pidgin-twitter.dll

これで、pidgin-2.4.3\pidgin\plugins に pdgin-twitter.dll ができているはずです。あとはこれを、マシンにインストールされている Pidgin の プラグインフォルダに入れればインストールは完了です。

更新履歴

  • 2008/07/19 pidgin-twitter プラグイン 0.7 に合わせて修正。
  • 2008/05/09 公開
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
04 2017/05 06
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
04 2017/05 06
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)