| 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 crash_stack.extend([ | 67 crash_stack.extend([ |
| 68 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), | 68 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), |
| 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 | |
| 78 result = Result(self.GetDummyChangeLog(), '') | 77 result = Result(self.GetDummyChangeLog(), '') |
| 79 self.assertEqual(classifier.Classify([result], CallStack(0)), | 78 self.assertEqual(classifier.Classify([result], CallStack(0)), '') |
| 80 '') | |
| 81 | 79 |
| 82 def testClassifyRankFunction(self): | 80 def testClassifyRankFunction(self): |
| 83 classifier = ProjectClassifier() | 81 classifier = ProjectClassifier() |
| 84 | 82 |
| 85 result1 = Result(self.GetDummyChangeLog(), 'src/') | 83 result1 = Result(self.GetDummyChangeLog(), 'src/') |
| 86 result1.file_to_stack_infos = { | 84 result1.file_to_stack_infos = { |
| 87 'comp1.cc': [ | 85 'comp1.cc': [ |
| 88 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) | 86 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) |
| 89 ] | 87 ] |
| 90 } | 88 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 113 crash_stack.extend([ | 111 crash_stack.extend([ |
| 114 StackFrame(0, '', 'android.a.f', 'android/a/cc', | 112 StackFrame(0, '', 'android.a.f', 'android/a/cc', |
| 115 'android/a.java', [2]), | 113 'android/a.java', [2]), |
| 116 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java', | 114 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java', |
| 117 'org/chromium/c.java', [8]) | 115 'org/chromium/c.java', [8]) |
| 118 ]) | 116 ]) |
| 119 | 117 |
| 120 self.assertEqual(classifier.Classify([], crash_stack), | 118 self.assertEqual(classifier.Classify([], crash_stack), |
| 121 'chromium') | 119 'chromium') |
| 122 | 120 |
| 121 # TODO(wrengr): what's the point of this? we're just testing that |
| 122 # mocking does in fact mock. |
| 123 def testClassifyReturnsNone(self): | 123 def testClassifyReturnsNone(self): |
| 124 def _MockClassify(*_, **args): | 124 self.mock(ProjectClassifier, 'Classify', lambda *_: None) |
| 125 self.assertIsNotNone(args) | 125 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 | 126 |
| 134 def testProjectClassifierDoNotHaveConfig(self): | 127 def testProjectClassifierDoNotHaveConfig(self): |
| 135 crash_config = CrashConfig.Get() | 128 crash_config = CrashConfig.Get() |
| 136 crash_config.project_classifier = {} | 129 crash_config.project_classifier = {} |
| 137 crash_config.put() | 130 crash_config.put() |
| 138 | 131 |
| 139 crash_stack = CallStack(0) | 132 crash_stack = CallStack(0) |
| 140 crash_stack.extend([ | 133 crash_stack.extend([ |
| 141 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), | 134 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), |
| 142 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), | 135 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), |
| 143 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) | 136 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) |
| 144 ]) | 137 ]) |
| 145 | 138 |
| 146 result1 = Result(self.GetDummyChangeLog(), 'src/') | 139 result1 = Result(self.GetDummyChangeLog(), 'src/') |
| 147 result1.file_to_stack_infos = { | 140 result1.file_to_stack_infos = { |
| 148 'comp1.cc': [ | 141 'comp1.cc': [ |
| 149 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) | 142 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) |
| 150 ] | 143 ] |
| 151 } | 144 } |
| 152 | 145 |
| 153 self.assertEqual(ProjectClassifier().Classify([result1], crash_stack), '') | 146 self.assertIsNone(ProjectClassifier().Classify([result1], crash_stack)) |
| 154 | 147 |
| 155 def testSortHosts(self): | 148 def testSortHosts(self): |
| 156 host_list = [ | 149 host_list = [ |
| 157 'src/', | 150 'src/', |
| 158 'src/chrome/browser/resources/', | 151 'src/chrome/browser/resources/', |
| 159 'src/media/', | 152 'src/media/', |
| 160 'src/sdch/', | 153 'src/sdch/', |
| 161 'src/testing/', | 154 'src/testing/', |
| 162 'src/third_party/WebKit/', | 155 'src/third_party/WebKit/', |
| 163 'src/third_party/', | 156 'src/third_party/', |
| (...skipping 12 matching lines...) Expand all Loading... |
| 176 'src/sdch/', | 169 'src/sdch/', |
| 177 'src/testing/', | 170 'src/testing/', |
| 178 'src/third_party/', | 171 'src/third_party/', |
| 179 'src/tools/', | 172 'src/tools/', |
| 180 'src/' | 173 'src/' |
| 181 ] | 174 ] |
| 182 | 175 |
| 183 self.assertEqual( | 176 self.assertEqual( |
| 184 ProjectClassifier().project_classifier_config['host_directories'], | 177 ProjectClassifier().project_classifier_config['host_directories'], |
| 185 expected_sorted_host_list) | 178 expected_sorted_host_list) |
| OLD | NEW |