Index: appengine/findit/waterfall/test/build_failure_analysis_test.py |
diff --git a/appengine/findit/waterfall/test/build_failure_analysis_test.py b/appengine/findit/waterfall/test/build_failure_analysis_test.py |
index 8fbd51e8e545c923a83b148a34f233bb5db133cb..370d76126dc9cf92a65e8790c6fd2786fd3219c8 100644 |
--- a/appengine/findit/waterfall/test/build_failure_analysis_test.py |
+++ b/appengine/findit/waterfall/test/build_failure_analysis_test.py |
@@ -73,6 +73,7 @@ class BuildFailureAnalysisTest(unittest.TestCase): |
} |
} |
change_log_json = { |
+ 'revision': 'rev', |
'touched_files': [ |
{ |
'change_type': ChangeType.ADD, |
@@ -111,11 +112,12 @@ class BuildFailureAnalysisTest(unittest.TestCase): |
}, |
] |
} |
+ deps_info = {} |
justification = build_failure_analysis._CheckFiles( |
- FailureSignal.FromDict(failure_signal_json), change_log_json) |
+ FailureSignal.FromDict(failure_signal_json), change_log_json, deps_info) |
self.assertIsNotNone(justification) |
- # The score is 14 because: |
+ # The score is 15 because: |
# +5 added a/b/f1.cc (same file src/a/b/f1.cc in failure_signal log) |
# +1 added d/e/a2.cc (related file a2_test.cc in failure_signal log) |
# +1 modified b/c/f2.h (related file a/b/c/f2.cc in failure_signal log) |
@@ -132,6 +134,7 @@ class BuildFailureAnalysisTest(unittest.TestCase): |
} |
} |
change_log_json = { |
+ 'revision': 'rev', |
'touched_files': [ |
{ |
'change_type': ChangeType.ADD, |
@@ -140,17 +143,60 @@ class BuildFailureAnalysisTest(unittest.TestCase): |
}, |
] |
} |
+ deps_info = {} |
justification = build_failure_analysis._CheckFiles( |
- FailureSignal.FromDict(failure_signal_json), change_log_json) |
+ FailureSignal.FromDict(failure_signal_json), change_log_json, deps_info) |
self.assertIsNone(justification) |
+ def testCheckFilesAgainstDEPSRoll(self): |
+ failure_signal_json = { |
+ 'files': { |
+ 'src/third_party/dep1/f.cc': [123], |
+ } |
+ } |
+ change_log_json = { |
+ 'revision': 'rev', |
+ 'touched_files': [ |
+ { |
+ 'change_type': ChangeType.MODIFY, |
+ 'old_path': 'DEPS', |
+ 'new_path': 'DEPS' |
+ }, |
+ ] |
+ } |
+ deps_info = { |
+ 'deps_rolls': { |
+ 'rev': [ |
+ { |
+ 'path': 'src/third_party/dep1/', |
+ 'repo_url': 'https://url_dep1', |
+ 'old_revision': '7', |
+ 'new_revision': '9', |
+ }, |
+ { |
+ 'path': 'third_party/dep2', |
+ 'repo_url': 'https://url_dep2', |
+ 'old_revision': None, |
+ 'new_revision': '1', |
+ }, |
+ ] |
+ } |
+ } |
+ |
+ justification = build_failure_analysis._CheckFiles( |
+ FailureSignal.FromDict(failure_signal_json), change_log_json, deps_info) |
+ self.assertIsNotNone(justification) |
+ # The score is 2 because: |
+ # +2 rolled third_party/dep1/ and src/third_party/dep1/f.cc was in log. |
+ self.assertEqual(2, justification['score']) |
+ |
def testAnalyzeSuccessfulBuild(self): |
failure_info = { |
'failed': False, |
} |
result = build_failure_analysis.AnalyzeBuildFailure( |
- failure_info, None, None) |
+ failure_info, change_logs=None, deps_info=None, failure_signals=None) |
self.assertEqual(0, len(result['failures'])) |
def testAnalyzeBuildFailure(self): |
@@ -239,6 +285,7 @@ class BuildFailureAnalysisTest(unittest.TestCase): |
], |
}, |
} |
+ deps_info = {} |
failure_signals_json = { |
'a': { |
'files': { |
@@ -293,5 +340,5 @@ class BuildFailureAnalysisTest(unittest.TestCase): |
} |
analysis_result = build_failure_analysis.AnalyzeBuildFailure( |
- failure_info, change_logs, failure_signals_json) |
+ failure_info, change_logs, deps_info, failure_signals_json) |
self.assertEqual(expected_analysis_result, analysis_result) |