Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(445)

Side by Side Diff: appengine/findit/crash/scorers/test/min_distance_test.py

Issue 2707603002: [Predator] Generate all changelogs in regression ranges instead of only matched changelogs (Closed)
Patch Set: . Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 from crash.stacktrace import StackFrame
6 from crash.suspect import AnalysisInfo
7 from crash.suspect import Suspect
8 from crash.scorers.min_distance import MinDistance
9 from crash.scorers.test.scorer_test_suite import ScorerTestSuite
10
11
12 class MinDistanceTest(ScorerTestSuite):
13
14 def testGetMetric(self):
15 dummy_changelog = self._GetDummyChangeLog()
16 suspect = Suspect(dummy_changelog, 'src/')
17 suspect.file_to_analysis_info = {
18 'file': AnalysisInfo(min_distance=0, min_distance_frame=None)
19 }
20
21 self.assertEqual(MinDistance().GetMetric(suspect), 0)
22
23 suspect = Suspect(dummy_changelog, 'src/')
24 self.assertEqual(MinDistance().GetMetric(suspect), float('inf'))
25
26 def testScore(self):
27 self.assertEqual(MinDistance().Score(0), 1)
28 self.assertEqual(MinDistance().Score(30), 0.8)
29 self.assertEqual(MinDistance().Score(60), 0)
30
31 def testReason(self):
32 self.assertEqual(MinDistance().Reason(0, 1),
33 ('MinDistance', 1, 'Minimum distance is 0'))
34 self.assertEqual(MinDistance().Reason(60, 0),
35 None)
36
37 def testChangedFiles(self):
38 dummy_changelog = self._GetDummyChangeLog()
39 suspect = Suspect(dummy_changelog, 'src/')
40 frame = StackFrame(0, 'src/', 'func', 'f.cc', 'a/b/src/f.cc', [2],
41 repo_url='https://repo_url')
42 suspect.file_to_stack_infos = {
43 'src/f.cc': [(frame, 0)]
44 }
45 suspect.file_to_analysis_info = {
46 'src/f.cc': AnalysisInfo(min_distance=0, min_distance_frame=frame)
47 }
48
49 self.assertEqual(MinDistance().ChangedFiles(suspect, 1),
50 [{'file': 'f.cc',
51 'blame_url': ('https://repo_url/+blame/%s/f.cc#2' %
52 dummy_changelog.revision),
53 'info': 'Minimum distance (LOC) 0, frame #0'}])
54
55 def testChangedFilesInfMinDistance(self):
56 dummy_changelog = self._GetDummyChangeLog()
57 suspect = Suspect(dummy_changelog, 'src/')
58 frame = StackFrame(0, 'src/', 'func', 'f.cc', 'a/b/src/f.cc', [2],
59 repo_url='https://repo_url')
60 suspect.file_to_stack_infos = {
61 'src/f.cc': [(frame, 0)]
62 }
63 suspect.file_to_analysis_info = {
64 'src/f.cc': AnalysisInfo(min_distance=float('inf'),
65 min_distance_frame=frame)
66 }
67
68 self.assertIsNone(MinDistance().ChangedFiles(suspect, 0))
69
70 def testChangedFilesSkipFileInfMinDistance(self):
71 dummy_changelog = self._GetDummyChangeLog()
72 suspect = Suspect(dummy_changelog, 'src/')
73 frame0 = StackFrame(0, 'src/', 'func0', 'f0.cc', 'a/b/src/f0.cc', [2],
74 repo_url='https://repo_url')
75 frame1 = StackFrame(1, 'src/', 'func1', 'f1.cc', 'a/b/src/f1.cc', [5],
76 repo_url='https://repo_url')
77 suspect.file_to_stack_infos = {
78 'src/f0.cc': [(frame0, 0)],
79 'src/f1.cc': [(frame1, 0)]
80 }
81 suspect.file_to_analysis_info = {
82 'src/f0.cc': AnalysisInfo(min_distance=0,
83 min_distance_frame=frame0),
84 'src/f1.cc': AnalysisInfo(min_distance=float('inf'),
85 min_distance_frame=frame1),
86 }
87
88 self.assertEqual(MinDistance().ChangedFiles(suspect, 1),
89 [{'file': 'f0.cc',
90 'blame_url': ('https://repo_url/+blame/%s/f0.cc#2' %
91 dummy_changelog.revision),
92 'info': 'Minimum distance (LOC) 0, frame #0'}])
93
OLDNEW
« no previous file with comments | « appengine/findit/crash/scorers/test/aggregators_test.py ('k') | appengine/findit/crash/scorers/test/scorer_test_suite.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698