| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 from crash.stacktrace import StackFrame | 5 from crash.stacktrace import StackFrame |
| 6 from crash.stacktrace import CallStack | 6 from crash.stacktrace import CallStack |
| 7 from crash.project_classifier import ProjectClassifier | 7 from crash.project_classifier import ProjectClassifier |
| 8 from crash.results import Result | 8 from crash.results import Result |
| 9 from crash.test.crash_testcase import CrashTestCase | 9 from crash.test.crash_testcase import CrashTestCase |
| 10 from crash.type_enums import CallStackLanguageType | 10 from crash.type_enums import CallStackLanguageType |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), | 69 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), |
| 70 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) | 70 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) |
| 71 ]) | 71 ]) |
| 72 | 72 |
| 73 self.assertEqual(classifier.Classify([], crash_stack), 'chromium') | 73 self.assertEqual(classifier.Classify([], crash_stack), 'chromium') |
| 74 | 74 |
| 75 def testClassifyResultsEmpty(self): | 75 def testClassifyResultsEmpty(self): |
| 76 classifier = ProjectClassifier() | 76 classifier = ProjectClassifier() |
| 77 | 77 |
| 78 result = Result(self.GetDummyChangeLog(), '') | 78 result = Result(self.GetDummyChangeLog(), '') |
| 79 self.assertEqual(classifier.Classify([result], CallStack(0)), | 79 project_name, project_path = classifier.Classify([result], CallStack(0)) |
| 80 '') | 80 self.assertEqual(project_name, '') |
| 81 | 81 |
| 82 def testClassifyRankFunction(self): | 82 def testClassifyRankFunction(self): |
| 83 classifier = ProjectClassifier() | 83 classifier = ProjectClassifier() |
| 84 | 84 |
| 85 result1 = Result(self.GetDummyChangeLog(), 'src/') | 85 result1 = Result(self.GetDummyChangeLog(), 'src/') |
| 86 result1.file_to_stack_infos = { | 86 result1.file_to_stack_infos = { |
| 87 'comp1.cc': [ | 87 'comp1.cc': [ |
| 88 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) | 88 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) |
| 89 ] | 89 ] |
| 90 } | 90 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 113 crash_stack.extend([ | 113 crash_stack.extend([ |
| 114 StackFrame(0, '', 'android.a.f', 'android/a/cc', | 114 StackFrame(0, '', 'android.a.f', 'android/a/cc', |
| 115 'android/a.java', [2]), | 115 'android/a.java', [2]), |
| 116 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java', | 116 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java', |
| 117 'org/chromium/c.java', [8]) | 117 'org/chromium/c.java', [8]) |
| 118 ]) | 118 ]) |
| 119 | 119 |
| 120 self.assertEqual(classifier.Classify([], crash_stack), | 120 self.assertEqual(classifier.Classify([], crash_stack), |
| 121 'chromium') | 121 'chromium') |
| 122 | 122 |
| 123 # TODO(wrengr): what's the point of this? we're just testing that |
| 124 # mocking does in fact mock. |
| 123 def testClassifyReturnsNone(self): | 125 def testClassifyReturnsNone(self): |
| 124 def _MockClassify(*_, **args): | 126 self.mock(ProjectClassifier, 'Classify', lambda *_: None) |
| 125 self.assertIsNotNone(args) | 127 self.assertIsNone(ProjectClassifier().Classify([], CallStack(0))) |
| 126 return None | |
| 127 | |
| 128 self.mock(ProjectClassifier, '_Classify', _MockClassify) | |
| 129 | |
| 130 classifier = ProjectClassifier() | |
| 131 self.assertEqual(classifier.Classify([], CallStack(0)), | |
| 132 '') | |
| 133 | 128 |
| 134 def testProjectClassifierDoNotHaveConfig(self): | 129 def testProjectClassifierDoNotHaveConfig(self): |
| 135 crash_config = CrashConfig.Get() | 130 crash_config = CrashConfig.Get() |
| 136 crash_config.project_classifier = {} | 131 crash_config.project_classifier = {} |
| 137 crash_config.put() | 132 crash_config.put() |
| 138 | 133 |
| 139 crash_stack = CallStack(0) | 134 crash_stack = CallStack(0) |
| 140 crash_stack.extend([ | 135 crash_stack.extend([ |
| 141 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), | 136 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), |
| 142 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), | 137 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), |
| 143 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) | 138 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) |
| 144 ]) | 139 ]) |
| 145 | 140 |
| 146 result1 = Result(self.GetDummyChangeLog(), 'src/') | 141 result1 = Result(self.GetDummyChangeLog(), 'src/') |
| 147 result1.file_to_stack_infos = { | 142 result1.file_to_stack_infos = { |
| 148 'comp1.cc': [ | 143 'comp1.cc': [ |
| 149 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) | 144 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) |
| 150 ] | 145 ] |
| 151 } | 146 } |
| 152 | 147 |
| 153 self.assertEqual(ProjectClassifier().Classify([result1], crash_stack), '') | 148 self.assertIsNone(ProjectClassifier().Classify([result1], crash_stack)) |
| 154 | 149 |
| 155 def testSortHosts(self): | 150 def testSortHosts(self): |
| 156 host_list = [ | 151 host_list = [ |
| 157 'src/', | 152 'src/', |
| 158 'src/chrome/browser/resources/', | 153 'src/chrome/browser/resources/', |
| 159 'src/media/', | 154 'src/media/', |
| 160 'src/sdch/', | 155 'src/sdch/', |
| 161 'src/testing/', | 156 'src/testing/', |
| 162 'src/third_party/WebKit/', | 157 'src/third_party/WebKit/', |
| 163 'src/third_party/', | 158 'src/third_party/', |
| (...skipping 12 matching lines...) Expand all Loading... |
| 176 'src/sdch/', | 171 'src/sdch/', |
| 177 'src/testing/', | 172 'src/testing/', |
| 178 'src/third_party/', | 173 'src/third_party/', |
| 179 'src/tools/', | 174 'src/tools/', |
| 180 'src/' | 175 'src/' |
| 181 ] | 176 ] |
| 182 | 177 |
| 183 self.assertEqual( | 178 self.assertEqual( |
| 184 ProjectClassifier().project_classifier_config['host_directories'], | 179 ProjectClassifier().project_classifier_config['host_directories'], |
| 185 expected_sorted_host_list) | 180 expected_sorted_host_list) |
| OLD | NEW |