2011-10-31 10 views
6

今朝私はテストを実行しましたが、2つの失敗があります。しかし、私は数日間コードを変更していないし、すべてのテストは合格しています。Gitがコードを知らずにコードを変更することは可能ですか?

Gitによれば、変更はありません(テスト出力であるcoverage.dataを除く)。 gitkには他の変更はありません。

コードが変更されたとき、Gitはどのように知っていますか?これはSSDの失敗/エラーによって引き起こされる可能性がありますか?

何が起こったのかを把握するにはどうすればよいですか?

EDIT:ユニットテストフレームワークを使用したRuby on Railsでの作業。

+4

今日は失敗しているので、月の最終日、特に31日後に問題があるかどうかを確認してください。 – manojlds

+0

それでした。月の最後の日に失敗します。 –

答えて

10

私は、テストが失敗した理由を理解することから始めます。これは、前にどうやって通過したかについての手がかりを与えるかもしれません。タイミングの問題、断続的な障害、テストハーネスの外部のもの、データの変更、日付や時間の変更、あらゆる種類のものなどがあります。

+0

はい、タイミングの問題です。 Date.todayの計算 - 6.months + 6.months。 31日の月の最後の日に失敗します! (8月29日(非閏年)と30日、私も思う)。 –

+2

あなたはそれについて正しいです。デバッガの下で 'DateTime.Today.AddMonths(-6).AddMonths(6).ToShortDateString();'を実行すると、 '10/30/2011 'が表示されます - 6monを引くと、 4月30日まで(4月以降は31日がない)、6monを追加すると10月30日になる。私はこれが理にかなっていると思う。 –

2

あなたのリポジトリは、Gitがそれを知っていなければ変更を加えることができず、リポジトリファイルを取得できるようにログを取得する必要があるため、どこかにログオンする必要があります。私は、失敗がテストと同時に実行してはならないマシン上の何かによって引き起こされているのではないか、またはあなたが予想していない競合状態になる可能性があることを確認します。

9

マイクがあなたの問題を見つけたのを見ました(ちょっとした答えをお願いします)。

はい、Gitを知らずにコードを変更することは可能です。 .gitignoreや.git/info/excludeのいずれかで、失敗の原因となったファイル(おそらく一時的なテストファイルまたはフィクスチャ)が無視される可能性があります。 git clean -dxfを実行すると、gitに知られていないもののチェックアウトが消去されます。 git status --ignoredは、gitで無視されるファイルを表示します。その場合、テストランナーの一員として、より良いテストクリーンアップを追加したいと考えています。後世のために

、ここでのテストはgitのに見える任意のコードの変更がされずに失敗する可能性があります方法の短いリストです:

  • 「一時的」テストファイルや備品が汚れている可能性があります。
  • "一時的な"データベースとテーブルが汚れている可能性があります。
  • 時間や日付には敏感です。
  • ネットワークリソースを使用して変更されました。
  • コンパイラが変更されました。
  • インストールされているライブラリが変更されました。
    • ライブラリが使用するライブラリが変更されました。
  • カーネルが変更されました。
  • 使用されたすべてのサーバー(データベース、Webサーバーなど)が変更されました。
  • これは並列処理を使用しており、微妙なバグは時々発生します。
  • ディスク(または一時ファイルが保存されるファイルシステム)がいっぱいです。
  • ディスク(または一時ファイルが保存されるファイルシステム)が破損しています。
  • メモリ/ディスク/プロセス/ファイルハンドルクォータが減少しました。
  • マシンのメモリが不足しています。
  • マシンのファイルハンドルが不足しています。
  • ランダムに生成されたデータでフィクスチャを使用し、バグをくすぐったものを生成しました。
関連する問題