私は最近ビルドシステムをautomake/autoconfに変換しました。私のプロジェクトでは、実行されている場所からディレクトリにいくつかの入力データファイルが必要な単体テストがいくつかあります。私がmake distcheckを実行してVPATHビルドを試みると、入力ファイルがあるディレクトリから明らかに実行されないので、これらのテストは失敗します。私はこのためのいくつかの迅速な修正があるかどうか疑問に思っていた。たとえば、私は何らかの理由でシステムにmakecheckcheckでこれらのテストを実行しないように伝えることはできますか?または、テストを実行する前にファイルが存在するディレクトリにcdしますか?distcheckを行い、入力ファイルを必要とするテスト
6
A
答えて
4
一般的な解決方法は、データファイルのソースディレクトリを調べるようにテストを書き込むことです。たとえば、テストで$srcdir
を参照するか、test
をtest.in
に変換し、@[email protected]
を参照してください。
あなたのテストは、すべてのソースディレクトリにある場合、あなたはMakefile.amにTESTS_ENVIRONMENTを設定することにより、そのディレクトリ内のすべてのテストを実行することができます。
TESTS_ENVIRONMENT = cd $(srcdir) &&
あなたのテストのいくつかはconfigureが作成された場合、これは失敗します。
TESTS_ENVIRONMENT = { test $${tst} = mytest && cd $(srcdir); true; } &&
これはせいぜい脆弱であり、そしてそれは、彼らがするようにテストを書くのがベストだろうようTESTS_ENVIRONMENTを使用しようとすると:ので、あなたは選択のようなものを収録したCDができ、その場合には、ビルドディレクトリにのみ生きますソースの一言で見るデータファイル用のctory。
7
私は同じ問題を抱えていて、ウィリアムズと同様の解決法を使用しました。
string path = DATADIR "/testdata/test1.dat"
これはmake check
とmake distcheck
で動作します:
EXTRA_DIST = testdata/test1.dat
AM_CPPFLAGS = -DDATADIR=\"$(srcdir)/\"
その後、私のユニットテストでは、私はDATADIRは定義を使用します。私のMakefile.amは次のようになります。
関連する問題
- 1. パスワード入力が必要なSudoを必要とするリモートサーバでコマンドを実行する - Paramiko
- 2. ユーザー入力が必要な端末コマンドを実行する
- 3. 入力ファイルと出力ソリューションでテストするためのスクリプト
- 4. ProcessBuilderを使用してコマンドラインと入力が必要なコマンドを実行する
- 5. カスタム必要なテストとテスト
- 6. travis-ci.orgでキーボード入力が必要なプロジェクトをテストするには?
- 7. Powershell Loopフリーズ、入力が必要ないときに入力を待つ
- 8. 引数や入力ファイルを必要としない単純なawkスクリプト
- 9. Excelセルに入力すると検索する必要があります。アクティブコントロールを必要としない
- 10. 並行Pythonを使ったクイックソート。入力としてXMLファイルを使用する必要があります
- 11. アプリケーションに入力ファイルが必要なときにPythonでアプリケーションを実行するようにする
- 12. コンソール入力が必要ないときに待機する
- 13. メイキング「ファイル」は、入力要素は必須(必須)
- 14. Django Nose - テスト実行中に出力をキャプチャする必要があります
- 15. automake:CPPFLAGSでdistcheck
- 16. MockMVC | JSONファイルを入力として渡す必要があります
- 17. SQLクエリ入力が必要
- 18. 入力ファイル私はタイプのファイルとID「テスト」の入力要素を私はアドレスバーに入れ</p> <p>持っているので、
- 19. 入力要素の後に改行を入力するjavacript
- 20. なぜこのプログラムは3行の入力を必要としますか?
- 21. inApp購入テストの銀行詳細が必要
- 22. 他のPHPファイルへの出力を必要とする
- 23. 必要に応じてhtml要素を定義する入力
- 24. Powershell New-AzureRmNotificationHubに入力ファイルが必要ですか?
- 25. Telegrafテスト入力と出力プラグインエラー複数のconfファイル
- 26. 「テンソルフローのプレースホルダテンソル入力の値を入力する必要があります」
- 27. flatpickr入力が必要になる
- 28. テスト再インストール - ファイルを保持するメソッド/プログラムが必要です
- 29. C#別の行に入力が必要です
- 30. .exeファイルに入力パラメータが必要かどうかを確認する方法
私のテストはsrc/some/pathにあり、データファイルは同じディレクトリにあります。 TESTS_ENVIRONMENT = cd $(srcdir)&& トリックが試行されましたが、テスト実行可能ファイルが見つからないため動作しませんでした。 VPATHビルドでは、テストが実行されているディレクトリへの書き込み権限がないため、必要なデータファイルをカレントディレクトリにコピーすることもできません。 –
@Martinでは、ソースディレクトリへの書き込み権限はありませんが、ビルドディレクトリへの書き込み権限はあります。どのようにファイルをコピーしていますか?単に 'EXTRA_DIST = datafile'をtest.inのMakefile.amと' cp $ {srcdir}/datafile .'に追加するだけです。ただし、テストがソースディレクトリから実行されている場合は、書き込み権限のためコピーしようとすると失敗します。私は、ビルドディレクトリから実行されるいくつかのテストと、ソースディレクトリから実行されるいくつかのテストがあると思います。 ( '* .in'という名前のテストは(おそらく)ビルドディレクトリから実行されますが、他のテストはソースディレクトリから実行されます) –
これは私が探していたものとまったく同じように見えましたが、これはAutomake 1.15、残念なことに:残念ながら:これはソースディレクトリ(既に悪い)に '* .log'と' * .trs'ファイルを作成しますが、ビルドディレクトリでそれらを探していますが、もちろん見つからないそれらはそこに(致命的です)。 –