私は最近ビルドシステムを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. 入力ファイルと出力ソリューションでテストするためのスクリプト
- 2. Powershell Loopフリーズ、入力が必要ないときに入力を待つ
- 3. カスタム必要なテストとテスト
- 4. コンソール入力が必要ないときに待機する
- 5. メイキング「ファイル」は、入力要素は必須(必須)
- 6. 入力ファイル私はタイプのファイルとID「テスト」の入力要素を私はアドレスバーに入れ</p> <p>持っているので、
- 7. なぜこのプログラムは3行の入力を必要としますか?
- 8. inApp購入テストの銀行詳細が必要
- 9. C#別の行に入力が必要です
- 10. 部分入力の入力モデルの結合が必要です
- 11. JSTLテストとHTML入力
- 12. cakephpに入力が必要です
- 13. iPad用データ入力が必要です
- 14. .exeファイルに入力パラメータが必要かどうかを確認する方法
- 15. 基本的なCの入力と出力に必要なヘルプ
- 16. 3つの入力ファイルが必要なPython MapReduce Hadoopストリーミングジョブ?
- 17. テスト再インストール - ファイルを保持するメソッド/プログラムが必要です
- 18. ファイル入力要素をjQueryでスワップ
- 19. jQuery addフィールドを入力する必要があります
- 20. ボタンは親ラジオボタンを入力する必要があります
- 21. 入力ボックスを入力欄と同じ行に入力してください
- 22. javascript/html入力。助けが必要
- 23. 座標の入力スコープ(マイナスが必要)
- 24. jqueryのチェックボックスが必要入力項目
- 25. 入力フォーカスがキーボードを閉じ、長いタッチが必要
- 26. 入力値に2を加える必要があります
- 27. 文字列に必要な文字を入力する方法
- 28. フォームに必要な入力をロックする
- 29. ファイル入力と出力
- 30. 入力ファイルの名前と行数の一部を出力するLinuxコマンド
私のテストは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'ファイルを作成しますが、ビルドディレクトリでそれらを探していますが、もちろん見つからないそれらはそこに(致命的です)。 –