Chromium Code Reviews| Index: appengine/findit/crash/loglinear/changelist_features/test/min_distance_test.py |
| diff --git a/appengine/findit/crash/loglinear/changelist_features/test/min_distance_test.py b/appengine/findit/crash/loglinear/changelist_features/test/min_distance_test.py |
| index 288c392c957fd2053da6786db75a57631bc53319..c58659f0325eb63743fc1246ddf5b32c378bf754 100644 |
| --- a/appengine/findit/crash/loglinear/changelist_features/test/min_distance_test.py |
| +++ b/appengine/findit/crash/loglinear/changelist_features/test/min_distance_test.py |
| @@ -8,7 +8,7 @@ from common.chrome_dependency_fetcher import ChromeDependencyFetcher |
| from common.dependency import Dependency |
| from common.dependency import DependencyRoll |
| from crash.crash_report import CrashReport |
| -from crash.crash_report_with_dependencies import CrashReportWithDependencies |
| +from crash.crash_report import CrashReport |
|
wrengr (wrong one)
2017/02/11 00:11:34
duplicate import
Sharu Jiang
2017/02/11 00:41:20
Done.
|
| from crash.loglinear.changelist_features import min_distance |
| from crash.loglinear.feature import ChangedFile |
| from crash.stacktrace import CallStack |
| @@ -70,17 +70,21 @@ class DistanceBetweenLineRangesTest(unittest.TestCase): |
| class MinDistanceTest(PredatorTestCase): |
| """Tests ``MinDistanceFeature``.""" |
| - def _GetDummyReport(self): |
| + def setUp(self): |
| + super(MinDistanceTest, self).setUp() |
| + self._get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| + |
| + def _GetDummyReport(self, deps=None, dep_rolls=None): |
| """Gets dummy ``CrashReport``.""" |
| crash_stack = CallStack(0, [StackFrame(0, 'src/', 'func', 'f.cc', |
| 'f.cc', [232], 'https://repo')]) |
| return CrashReport('rev', 'sig', 'win', |
| Stacktrace([crash_stack], crash_stack), |
| - ('rev0', 'rev9')) |
| + ('rev0', 'rev9'), deps, dep_rolls) |
| - def _GetMockSuspect(self): |
| + def _GetMockSuspect(self, dep_path='src/'): |
| """Returns a dummy ``Suspect``.""" |
| - return Suspect(self.GetDummyChangeLog(), 'src/') |
| + return Suspect(self.GetDummyChangeLog(), dep_path) |
| def testMinDistanceFeatureIsLogZero(self): |
| """Test that the feature returns log(0) when there are no matched files.""" |
| @@ -93,16 +97,9 @@ class MinDistanceTest(PredatorTestCase): |
| def testMinDistanceFeatureIsLogOne(self): |
| """Test that the feature returns log(1) when the min_distance is 0.""" |
| - self.mock(ChromeDependencyFetcher, 'GetDependency', |
| - lambda *_: {'src/': Dependency('src/', 'https://repo', '6')}) |
| - self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', |
| - lambda *_: {'src/': DependencyRoll('src/', 'https://repo', |
| - '0', '4')}) |
| - |
| - get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| - report = CrashReportWithDependencies( |
| - self._GetDummyReport(), ChromeDependencyFetcher(get_repository)) |
| - suspect = self._GetMockSuspect() |
| + report = self._GetDummyReport( |
| + deps={'src/': Dependency('src/', 'https://repo', '6')}, |
| + dep_rolls={'src/': DependencyRoll('src/', 'https://repo', '0', '4')}) |
| touched_file_to_stack_infos = { |
| FileChangeInfo(ChangeType.MODIFY, 'file', 'file'): |
| @@ -113,21 +110,14 @@ class MinDistanceTest(PredatorTestCase): |
| lambda *_: min_distance.ModifiedFrameInfo(0, None)) |
| self.assertEqual( |
| lmath.LOG_ONE, |
| - min_distance.MinDistanceFeature(get_repository, _MAXIMUM)(report)( |
| - suspect, touched_file_to_stack_infos).value) |
| + min_distance.MinDistanceFeature(self._get_repository, _MAXIMUM)(report)( |
| + self._GetMockSuspect(), touched_file_to_stack_infos).value) |
| def testMinDistanceFeatureMiddling(self): |
| """Test that the feature returns middling scores for middling distances.""" |
| - self.mock(ChromeDependencyFetcher, 'GetDependency', |
| - lambda *_: {'src/': Dependency('src/', 'https://repo', '6')}) |
| - self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', |
| - lambda *_: {'src/': DependencyRoll( |
| - 'src/', 'https://repo', '0', '4')}) |
| - |
| - get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| - report = CrashReportWithDependencies( |
| - self._GetDummyReport(), ChromeDependencyFetcher(get_repository)) |
| - suspect = self._GetMockSuspect() |
| + report = self._GetDummyReport( |
| + deps={'src/': Dependency('src/', 'https://repo', '6')}, |
| + dep_rolls={'src/': DependencyRoll('src/', 'https://repo', '0', '4')}) |
| frame = StackFrame(0, 'src/', 'func', 'f.cc', 'f.cc', [232], 'https://repo') |
| distance = 42. |
| @@ -140,21 +130,14 @@ class MinDistanceTest(PredatorTestCase): |
| lambda *_: min_distance.ModifiedFrameInfo(distance, frame)) |
| self.assertEqual( |
| lmath.log((_MAXIMUM - distance) / _MAXIMUM), |
| - min_distance.MinDistanceFeature(get_repository, _MAXIMUM)(report)( |
| - suspect, touched_file_to_stack_infos).value) |
| + min_distance.MinDistanceFeature(self._get_repository, _MAXIMUM)(report)( |
| + self._GetMockSuspect(), touched_file_to_stack_infos).value) |
| def testMinDistanceFeatureIsOverMax(self): |
| """Test that we return log(0) when the min_distance is too large.""" |
| - self.mock(ChromeDependencyFetcher, 'GetDependency', |
| - lambda *_: {'src/': Dependency('src/', 'https://repo', '6')}) |
| - self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', |
| - lambda *_: {'src/': DependencyRoll( |
| - 'src/', 'https://repo', '0', '4')}) |
| - |
| - get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| - report = CrashReportWithDependencies( |
| - self._GetDummyReport(), ChromeDependencyFetcher(get_repository)) |
| - suspect = self._GetMockSuspect() |
| + report = self._GetDummyReport( |
| + deps={'src/': Dependency('src/', 'https://repo', '6')}, |
| + dep_rolls={'src/': DependencyRoll('src/', 'https://repo', '0', '4')}) |
| distance = _MAXIMUM + 1 |
| touched_file_to_stack_info = { |
| @@ -168,13 +151,12 @@ class MinDistanceTest(PredatorTestCase): |
| lambda *_: min_distance.ModifiedFrameInfo(distance, None)) |
| self.assertEqual( |
| lmath.log((_MAXIMUM - distance) / _MAXIMUM), |
| - min_distance.MinDistanceFeature(get_repository, _MAXIMUM)(report)( |
| - suspect, touched_file_to_stack_info).value) |
| + min_distance.MinDistanceFeature(self._get_repository, _MAXIMUM)(report)( |
| + self._GetMockSuspect(), touched_file_to_stack_info).value) |
| def testDistanceBetweenTouchedFileAndStacktrace(self): |
| """Tests ``DistanceBetweenTouchedFileAndStacktrace`` method.""" |
| - get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| - feature = min_distance.MinDistanceFeature(get_repository, _MAXIMUM) |
| + feature = min_distance.MinDistanceFeature(self._get_repository, _MAXIMUM) |
| frame1 = StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [7], |
| repo_url='https://repo_url') |
| frame2 = StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [17], |
| @@ -209,15 +191,9 @@ class MinDistanceTest(PredatorTestCase): |
| The infinity distance means the touched file get overwritten by other |
| cls, and the change didn't show in the final blame file. |
| """ |
| - self.mock(ChromeDependencyFetcher, 'GetDependency', |
| - lambda *_: {'src/': Dependency('src/', 'https://repo', '6')}) |
| - self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', |
| - lambda *_: {'src/': DependencyRoll( |
| - 'src/', 'https://repo', '0', '4')}) |
| - |
| - get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| - report = CrashReportWithDependencies( |
| - self._GetDummyReport(), ChromeDependencyFetcher(get_repository)) |
| + report = self._GetDummyReport( |
| + deps={'src/': Dependency('src/', 'https://repo', '6')}, |
| + dep_rolls={'src/': DependencyRoll('src/', 'https://repo', '0', '4')}) |
| suspect = self._GetMockSuspect() |
| distance = _MAXIMUM + 1 |
| @@ -232,28 +208,21 @@ class MinDistanceTest(PredatorTestCase): |
| lambda *_: None) |
| self.assertEqual( |
| lmath.LOG_ZERO, |
| - min_distance.MinDistanceFeature(get_repository, _MAXIMUM)(report)( |
| + min_distance.MinDistanceFeature(self._get_repository, _MAXIMUM)(report)( |
| suspect, touched_file_to_stack_info).value) |
| self.mock(min_distance.MinDistanceFeature, |
| 'DistanceBetweenTouchedFileAndStacktrace', |
| lambda *_: min_distance.ModifiedFrameInfo(float('inf'), None)) |
| self.assertEqual( |
| lmath.LOG_ZERO, |
| - min_distance.MinDistanceFeature(get_repository, 100)(report)( |
| + min_distance.MinDistanceFeature(self._get_repository, 100)(report)( |
| suspect, touched_file_to_stack_info).value) |
| def testMinDistanceChangedFiles(self): |
| """Tests ``ChangedFile`` method.""" |
| - self.mock(ChromeDependencyFetcher, 'GetDependency', |
| - lambda *_: {'src/': Dependency('src/', 'https://repo', '6')}) |
| - self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', |
| - lambda *_: {'src/': DependencyRoll('src/', 'https://repo', |
| - '0', '4')}) |
| - |
| - get_repository = GitilesRepository.Factory(self.GetMockHttpClient()) |
| - report = CrashReportWithDependencies( |
| - self._GetDummyReport(), ChromeDependencyFetcher(get_repository)) |
| - suspect = self._GetMockSuspect() |
| + report = self._GetDummyReport( |
| + deps={'src/': Dependency('src/', 'https://repo', '6')}, |
| + dep_rolls={'src/': DependencyRoll('src/', 'https://repo', '0', '4')}) |
| distance = 42 |
| touched_file_to_stack_info = { |
| @@ -267,8 +236,8 @@ class MinDistanceTest(PredatorTestCase): |
| 'DistanceBetweenTouchedFileAndStacktrace', |
| lambda *_: min_distance.ModifiedFrameInfo(distance, frame)) |
| self.assertEqual( |
| - min_distance.MinDistanceFeature(get_repository, _MAXIMUM)(report)( |
| - suspect, touched_file_to_stack_info).changed_files, |
| + min_distance.MinDistanceFeature(self._get_repository, _MAXIMUM)(report)( |
| + self._GetMockSuspect(), touched_file_to_stack_info).changed_files, |
| [ChangedFile(name='file', |
| blame_url=('%s/+blame/%s/f.cc#%d' % |
| (frame.repo_url, |