2017-06-25 6 views
3

私はしばしば緑色である薄片状のテストを分析して修正しようとしています。
私の問題は、一度テストに合格するとBazelは入力が変わるまで再実行しないということです。
私はあなたが目標を再実行するようにBazelに頼むことができるのを見ましたが、最初に緑色になるまで(すなわち、薄片状のテストを緩和し、それを解決しない)Bazelにキャッシュされたテストを再実行するように頼むことができますか?

Bazelに合格してもテストを実行する方法はありますか?
私はbazel test --force-attempts=50 //my-package:my-target

答えて

4

、Bazelは実際に具体薄片状試験の診断のために設計されたフラグを有する:--runs_per_test、試験N回の再実行のみ失敗ランからログを保つであろう。

$ bazel test --runs_per_test=10 :flaker 
INFO: Found 1 test target... 
FAIL: //:flaker (run 10 of 10) (see /output/testlogs/flaker/test_run_10_of_10.log). 
FAIL: //:flaker (run 4 of 10) (see /output/testlogs/flaker/test_run_4_of_10.log). 
FAIL: //:flaker (run 5 of 10) (see /output/testlogs/flaker/test_run_5_of_10.log). 
FAIL: //:flaker (run 9 of 10) (see /output/testlogs/flaker/test_run_9_of_10.log). 
FAIL: //:flaker (run 3 of 10) (see /output/testlogs/flaker/test_run_3_of_10.log). 
Target //:flaker up-to-date: 
    bazel-bin/flaker 
INFO: Elapsed time: 0.828s, Critical Path: 0.42s 
//:flaker                FAILED 

Executed 1 out of 1 tests: 1 fails locally. 

それを使用して、テストがどれくらい薄れているかをすぐに把握し、失敗したログをいくつか得ることができます。

4

のようなものは、どうやらそれのためのフラグがありますたいと思います:)

https://bazel.build/versions/master/docs/bazel-user-manual.html#flag--cache_test_results

--cache_test_results =(YES | NO |オート)(-t)

このオプションを 'auto'(デフォルト)に設定すると、Bazelは次のいずれかの条件が当てはまる場合にのみ、 テストを再実行します。

Bazelがテストまたはその依存関係の変更を検出しました が複数の外部テストとしてマークされているとマークされました --runs_per_testが失敗しました。 「いいえ」の場合、すべてのテストは無条件で実行されます。

'yes'の場合​​、キャッシングの動作はautoと同じになりますが、 は--runs_per_testを使用してテストの失敗とテストの実行をキャッシュすることができます。試験結果は関係なく、常にこのオプションを有効にするかどうかのBazelの出力ツリー、 に保存されているので、あなたが得るためにbazelテストの前に実行(S)に --cache_test_resultsを使用している必要がないことを

注意キャッシュヒット。このオプションは、Bazelが以前に実行した結果を保存するかどうかにかかわらず、以前に 保存結果を使用するかどうかにのみ影響します。

デフォルトでは、.bazelrcファイル にこのオプションを有効にしたユーザーは、特定の実行時にデフォルトを上書きするために便利な略語-t(on)または-t-(off)を見つけることができます。 --cache_test_resultsに加え

関連する問題