とりあえずの独り言

テーマは特に限定せず、独り言のように

sqlalchemy-migrateのtestコマンドは、想像していたテストとは違った

python manage.py test

scriptファイルのテストができて、たとえエラーだったとしても冪等性が守られてるもんだと思ってた。

testって言ったら、upgradeしてdowngradeしてあってたらOKの判定してくれて、仮に間違ってたとしてもtest前の状態から変わっていません!ってのを想像してた

でも、実際はupgradeして、downgradeしるだけっぽい。だから、upgradeだけ成功して、downgrade失敗すると中途半端な状態になる可能性がある。

確かに、ソース追ってみるとコマンドのところに

def test(url, repository, **opts):
    """%prog test URL REPOSITORY_PATH [VERSION]

    Performs the upgrade and downgrade option on the given
    database. This is not a real test and may leave the database in a
    bad state. You should therefore better run the test on a copy of
    your database.
    """

って書いてあるし。。。
中途半端な状態になる可能性があるなら、個別にupgrade downgradeを試せばいいのでは?

ちなみに、‘script`はバージョン3まで進んでいるけど、DBのバージョン1とか、複数バージョンにまたがったtestも失敗する可能性がある模様
最新のスクリプトが最新反映済みのDBへ成功するかどうかしか見ていない気がする



testコマンドの使いどころがわからん