Kouhei Sutou
kou****@cozmi*****
2004年 9月 29日 (水) 00:19:06 JST
須藤です. なんとなくSchemeが書きたくなったので,uim/intl.cのテストを書 いてみました. # uim/intl.cをテスト無しで放置しておくのも気が引けましたし. ただ,msgfmtが無かったり,en_USロケールが無かったりするとテ ストは失敗すると思います. ついでですが,GaUnit 0.1.0をリリースしました. http://www.cozmixng.org/~kou/download/gaunit-0.1.0.tar.gz 0.1.0を使うと以下のようなオプションが使えるようになります. : -sREGEXP, --test-suite=REGEXP 正規表現REGEXPにマッチするテストスイート名を持つテストス イートのみ実行します. : -cREGEXP, --test-case=REGEXP 正規表現REGEXPにマッチするテストケース名を持つテストケー スのみ実行します. : -tREGEXP, --test=REGEXP 正規表現REGEXPにマッチするテスト名を持つテストのみ実行し ます. uimのテストは毎回テストケース毎にuim-shを起動するので,わり とテスト時間がかかりますが,上記のオプションを使えば特定のテ ストだけを実行というのがしやすくなるかもしれません. 例えば,uim/intl.cのテストだけ実行するには以下のようにできま す. % test/run-test.scm -cintl # テストケース名が"test intl"で,正規表現/intl/にマッチする # から Index: test/test-intl.scm =================================================================== --- test/test-intl.scm (revision 0) +++ test/test-intl.scm (revision 0) @@ -0,0 +1,47 @@ +#!/usr/bin/env gosh + +(use test.unit) + +(require "test/uim-test-utils") + +(let* ((current-lang #f) + (lang "en_US") + (locale-dir (build-path "test" "locale")) + (LC_MESSAGES-dir (build-path locale-dir "en_US" "LC_MESSAGES")) + (domain "uim") + (msgid "hello") + (msgstr "Hello")) + (define-uim-test-case "test intl" + (setup + (lambda () + (set! current-lang (sys-getenv "LANG")) + (sys-putenv "LANG" lang) + (make-directory* LC_MESSAGES-dir) + (with-output-to-file (build-path LC_MESSAGES-dir #`",|domain|.po") + (lambda () + (display + (string-join + `("msgid \"\"" + "msgstr \"\"" + "\"MIME-Version: 1.0\\n\"" + "\"Content-Type: text/plain; charset=UTF-8\\n\"" + "\"Content-Transfer-Encoding: 8bit\\n\"" + "" + ,#`"msgid \",|msgid|\"" + ,#`"msgstr \",|msgstr|\"") + "\n")))) + (run-process "msgfmt" "-o" + (build-path LC_MESSAGES-dir #`",|domain|.mo") + (build-path LC_MESSAGES-dir #`",|domain|.po") + :wait #t) + (*uim-sh-setup-proc*))) + (teardown + (lambda () + (sys-putenv "LANG" current-lang) + (remove-directory* locale-dir))) + ("test gettext" + (assert-equal msgid (uim `(gettext ,msgid))) + (uim `(bindtextdomain ,domain ,locale-dir)) + (assert-equal msgstr (uim `(dgettext ,domain ,msgid))) + (uim `(textdomain ,domain)) + (assert-equal msgstr (uim `(gettext ,msgid)))))) Property changes on: test/test-intl.scm ___________________________________________________________________ Name: svn:executable + *