From: Kouhei S. <ko...@co...> - 2005-01-30 15:03:37
|
須藤です. In <200...@hi...> "[ruby-gnome2-devel-ja] GnomePrint" on Sun, 30 Jan 2005 04:12:52 +0900, Masao Mutoh <mu...@hi...> wrote: > GnomePrintのテストプログラムがこけるようです。 > > $ ruby test/run-test.rb ... > 1) Error: > test_line_to(TestContext): > RuntimeError: GnomePrint-CRITICAL **:file gnome-print-stdapi.c: line 390 (gnome_print_lineto): assertion `pc->haspage' failed > ./test/test_context.rb:16:in `line_to' > ./test/test_context.rb:16:in `test_line_to' このテストはlibgnomeprintの関数がエラーコードを返したときに, Gnome::PrintError例外を発生するかどうかというテストです. このテストが失敗するようになったのは,2005-01-09の rbglib_log_handlerの変更のせいです. libgnomeprintはg_return_val_if_failを使って予期していない引 数がきたときはエラーコードを返します. Ruby/GnomePrintでは check_return_codeで戻り値をチェックして,エラーの場合は Gnome::PrintError例外を発生させます. しかし,2005-01-09の変更で,g_return_val_if_failの時点で RuntimeErrorが発生するようになってしまったので,従来の戻り値 をチェックしてRuby/GnomePrint用の例外を発生させるということ ができなくなっています. 解決案: * Ruby/GnomePrint側で戻り値をチェックする前に GLib::Log.cancel_handler = trueしてRuntimeErrorrをraise しないようにする. * GLib::Log.add_log_handler(domain) do |level, message| ... end みたいなAPIを用意して,ドメイン毎にログハンドラを登録で きるようにする. Ruby/GnomePrintでは,ログを無視するようなハンドラを設定 する($DEBUGとか$VERBOSEがtrueの時はSTDERRに出力してもよ いかも). 私はすこし手間がかかりますが,後者がいいです. # むとうさんが忙しいようなら,代わりにrbglib_messages.cをい # じってもいいです. |