どうやら私の質問"Can I restrict nose coverage output to directory (rather than package)?"の答えはいいえですが、--coverage-package=PACKAGE
オプションを、各.pyファイルのパッケージ名をディレクトリに含めて鼻に渡すことができます。例えばのでディレクトリ内のすべてのファイル名をコマンドラインオプションに変換するための(bash)シェルスクリプトを書くにはどうすればよいですか?
、ディレクトリが含まれている場合:
foo.py
bar.py
baz.py
を...そして私は、コマンドを使用する必要があります:
nosetests --with-coverage --coverage-package=foo --coverage-package=bar --coverage-package=baz
だから私の質問は、誰かがいくつかのシェルスクリプトを書くことができ、あります現在のディレクトリ内の.py拡張子を持つすべてのファイル名を取り、上記のコマンドライン(.py拡張子を削除したもの)を生成するには、コード(shまたはbashが望ましい)を使用しますか?私のbashスキルはかなり限られています。 (私はPythonでそれを行うように誘惑しています。)
このソリューションは、スペースまたはglobメタキャラクタを含むすべての.pyファイルで失敗します。そして、Pythonスクリプトのファイル名にはこのようなものが含まれていることは明らかですが、壊れた解決策を簡単に簡単に実行できるようにしておく必要はありません。 – lhunath
なぜ失敗するかは、引用符で囲まれていない展開ではbashの単語分割とbashパス名の拡張が行われます。したがって、foo = "A * in the sky.mp3"; rm -f $ fooは悲惨な結果になります。この悪い練習の結果がどれほど悲惨であるかは、しばしば予測できないので、**常に**あなたのコマンドに対する別の引数を適切に引用するだけです。この場合、各--cover-packageは個別の引数であり、個別に引用符で囲む必要があります。 – lhunath
ありがとうございます。 "$ {f%。*}"を引用すると、あなたが記述している問題に対して保護されているようです。私は私の答えを編集しました。私は、1.py、2.pyと "3 * 4.pl"というファイルを作成し、次にrm $を実行してテストしました(* .plのfの場合echo; "$ f"; done)。このコマンドは、最後のファイルのみを削除します。私はforループをはるかに読みやすくするために私のソリューションを修正する方が好きです。 –