Xcode で Google App Engine 開発する場合の「ターゲット」設定
以前は Eclipse も使っていたのですが、どうも挙動が気に入らなくてプログラム開発は意地でも Xcode を使うようにしています。
さて、Google App Engine を Xcode で開発する際、基本的なことは変わりませんが、エラーチェックやテストケースの実行スクリプトを自分で設定しなければなりません。 私はこの部分をシェルスクリプトで記述していますので、この記事でも同様に記述します。
基本的なターゲット構成は以下のようにしています。
「ファイルをコピー」でプロジェクトに追加しているプログラムファイルを「プロダクトディレクトリ(build/Debug/)」にコピーします。 ちなみに、個人的に Google App Engine が実行するスクリプトはコピー元の(プロジェクトが参照している)ファイルにしています(実行前にビルドし忘れていることがあるため)。
このプロダクトディレクトリにコピーしたスクリプトファイルに対し、エラーチェクとテストを施します。 Google はエラーチェックツールとして pychecker を推していますが、私は pyflakes を使用しています(pychecker は設定が面倒ですから)。
BeautifulSoup のようなエラーが多く生じるライブラリファイルは、予め「ファイルをコピー」に追加しないでおくか、以下のように条件分岐で省いてしまいます。
# # スクリプトを実行(pyflakes) # cd $BUILT_PRODUCTS_DIR # pyflakes でエラーチェック for f in *.py do # BeautifulSoup.py をチェックしない if [ $f = "BeautifulSoup.py" ]; then echo "$f をパスします" continue fi echo $f /usr/local/bin/pyflakes $f done exit 0
テストスクリプトを実行する場合は、test.py というファイルを実行するだけで全てのテストが実行されるようにしておきます。
#!/usr/bin/env python # -*- coding: utf-8 -*- import unittest import logging import codecs, sys sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout) # 日本語出力対応 if __name__ == '__main__': logging.getLogger().setLevel(logging.INFO) # ロギング設定 tests = [ 'abc_test', 'def_test', # 実行するテストケースモジュール群 ] suite = unittest.TestLoader().loadTestsFromNames(tests) unittest.TextTestRunner(verbosity=2).run(suite)
この test.py を実行するのが以下のシェルスクリプトです。
# # スクリプトを実行(unittest) # cd $BUILT_PRODUCTS_DIR # テストスクリプトの実行 python test.py exit 0