nosetestsをWindows Subsystem for Linuxで使う場合の注意点

Pythonのunittest実行ライブラリの nose ですが、ファイル名に test がついているテストファイルを nosetests コマンドで自動検索しようとしても全然引っかからない事象に遭遇。 一応、直接ファイルを指定すれば実行はしてくれる。

で、色々なところを見て回ったんですが、最も肝心な注意書きの否定形を見落としていました。

It is important to note that the default behavior of nose is to not include tests from files which are executable.

http://nose.readthedocs.io/en/latest/usage.html より引用

今回は Windows のドライブをマウントしたところにファイルをチェックアウトしていたので、Linux側でのパーミッションは777固定で変更できません。
そのため、実行権限あり状態のファイルしか存在しないので、デフォルトの挙動だとスキップされてしまうんですね。

解決策は上記のページの中にも書いてある通り --exe オプションを付けて実行するだけ。 これで解決。

なお、うまく読み込めない場合は以下の通りの方法で verbosity 3 (-vv) を付けてどのようなサーチができたかを調べると楽。

# これなら実行できる
nosetests --exe 

# なにかうまく読み込めないなーと思った場合
nosetests -vv --collect-only