Xcode で Google App Engine 開発する場合の「ターゲット」設定

以前は Eclipse も使っていたのですが、どうも挙動が気に入らなくてプログラム開発は意地でも Xcode を使うようにしています。
さて、Google App EngineXcode で開発する際、基本的なことは変わりませんが、エラーチェックやテストケースの実行スクリプトを自分で設定しなければなりません。 私はこの部分をシェルスクリプトで記述していますので、この記事でも同様に記述します。
基本的なターゲット構成は以下のようにしています。

ファイルをコピー」でプロジェクトに追加しているプログラムファイルを「プロダクトディレクト(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