| OLD | NEW |
| (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 import copy |
| 6 |
| 7 from common.chrome_dependency_fetcher import ChromeDependencyFetcher |
| 8 from common.dependency import Dependency |
| 9 from common.dependency import DependencyRoll |
| 10 from crash.crash_report import CrashReport |
| 11 from crash.crash_report import _FrozenDict |
| 12 from crash.stacktrace import CallStack |
| 13 from crash.stacktrace import StackFrame |
| 14 from crash.stacktrace import Stacktrace |
| 15 from crash.test.crash_test_suite import CrashTestSuite |
| 16 from crash.type_enums import CallStackFormatType |
| 17 from crash.type_enums import LanguageType |
| 18 from libs.gitiles.change_log import ChangeLog |
| 19 from libs.gitiles.gitiles_repository import GitilesRepository |
| 20 |
| 21 DUMMY_CHANGELOG1 = ChangeLog.FromDict({ |
| 22 'author': { |
| 23 'name': 'r@chromium.org', |
| 24 'email': 'r@chromium.org', |
| 25 'time': 'Thu Mar 31 21:24:43 2016', |
| 26 }, |
| 27 'committer': { |
| 28 'email': 'r@chromium.org', |
| 29 'time': 'Thu Mar 31 21:28:39 2016', |
| 30 'name': 'example@chromium.org', |
| 31 }, |
| 32 'message': 'dummy', |
| 33 'commit_position': 175900, |
| 34 'touched_files': [ |
| 35 { |
| 36 'change_type': 'add', |
| 37 'new_path': 'a.cc', |
| 38 'old_path': None, |
| 39 }, |
| 40 ], |
| 41 'commit_url': 'https://repo.test/+/1', |
| 42 'code_review_url': 'https://codereview.chromium.org/3281', |
| 43 'revision': '1', |
| 44 'reverted_revision': None |
| 45 }) |
| 46 |
| 47 DUMMY_CHANGELOG2 = ChangeLog.FromDict({ |
| 48 'author': { |
| 49 'name': 'example@chromium.org', |
| 50 'email': 'example@chromium.org', |
| 51 'time': 'Thu Mar 31 21:24:43 2016', |
| 52 }, |
| 53 'committer': { |
| 54 'name': 'example@chromium.org', |
| 55 'email': 'example@chromium.org', |
| 56 'time': 'Thu Mar 31 21:28:39 2016', |
| 57 }, |
| 58 'message': 'dummy', |
| 59 'commit_position': 175976, |
| 60 'touched_files': [ |
| 61 { |
| 62 'change_type': 'add', |
| 63 'new_path': 'f0.cc', |
| 64 'old_path': 'b/f0.cc' |
| 65 }, |
| 66 ], |
| 67 'commit_url': 'https://repo.test/+/2', |
| 68 'code_review_url': 'https://codereview.chromium.org/3281', |
| 69 'revision': '2', |
| 70 'reverted_revision': '1' |
| 71 }) |
| 72 |
| 73 DUMMY_CHANGELOG3 = ChangeLog.FromDict({ |
| 74 'author': { |
| 75 'name': 'e@chromium.org', |
| 76 'email': 'e@chromium.org', |
| 77 'time': 'Thu Apr 1 21:24:43 2016', |
| 78 }, |
| 79 'committer': { |
| 80 'name': 'example@chromium.org', |
| 81 'email': 'e@chromium.org', |
| 82 'time': 'Thu Apr 1 21:28:39 2016', |
| 83 }, |
| 84 'message': 'dummy', |
| 85 'commit_position': 176000, |
| 86 'touched_files': [ |
| 87 { |
| 88 'change_type': 'modify', |
| 89 'new_path': 'f.cc', |
| 90 'old_path': 'f.cc' |
| 91 }, |
| 92 { |
| 93 'change_type': 'delete', |
| 94 'new_path': None, |
| 95 'old_path': 'f1.cc' |
| 96 }, |
| 97 ], |
| 98 'commit_url': 'https://repo.test/+/3', |
| 99 'code_review_url': 'https://codereview.chromium.org/3281', |
| 100 'revision': '3', |
| 101 'reverted_revision': None |
| 102 }) |
| 103 |
| 104 DUMMY_CALLSTACKS = [ |
| 105 CallStack(0, [], CallStackFormatType.DEFAULT, LanguageType.CPP), |
| 106 CallStack(1, [], CallStackFormatType.DEFAULT, LanguageType.CPP)] |
| 107 DUMMY_REPORT = CrashReport( |
| 108 None, None, None, Stacktrace(DUMMY_CALLSTACKS, DUMMY_CALLSTACKS[0]), |
| 109 (None, None), None, None) |
| 110 |
| 111 |
| 112 class FrozenDictTest(CrashTestSuite): |
| 113 def testHash(self): |
| 114 """Test that ``_FrozenDict`` does not throw an exception in ``hash``.""" |
| 115 try: |
| 116 _h = hash(_FrozenDict({'a': 1, 'b': 2, 'c': 3})) |
| 117 except TypeError as e: # pragma: no cover |
| 118 if 'unhashable type' in str(e): |
| 119 self.fail('_FrozenDict.__hash__ does not work') |
| 120 else: |
| 121 raise e |
| 122 |
| 123 |
| 124 class CrashReportTest(CrashTestSuite): |
| 125 |
| 126 def testDependenciesAndDependencyRollsIsFrozenDict(self): |
| 127 crash_report = CrashReport( |
| 128 'rev', 'sig', 'win', None, ('1', '3'), |
| 129 {'src/': Dependency('src/', 'http://repo', '5')}, |
| 130 {'src/': DependencyRoll('src/', 'http://repo', '1', '3')}) |
| 131 self.assertTrue(isinstance(crash_report.regression_range, tuple)) |
| 132 self.assertTrue(isinstance(crash_report.dependencies, _FrozenDict)) |
| 133 self.assertTrue(isinstance(crash_report.dependency_rolls, _FrozenDict)) |
| OLD | NEW |