blob: e9844ff60c0465f7ac94a5570e88aa29ea5d1022 [file]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
from analysis.stacktrace import StackFrame
from analysis.suspect import Suspect
from libs.gitiles.change_log import ChangeLog
DUMMY_CHANGELOG1 = ChangeLog.FromDict({
'author': {
'name': 'r@chromium.org',
'email': 'r@chromium.org',
'time': 'Thu Mar 31 21:24:43 2016',
},
'committer': {
'email': 'r',
'time': 'Thu Mar 31 21:28:39 2016',
'name': 'example@chromium.org',
},
'message': 'dummy',
'commit_position': 175900,
'touched_files': [
{
'change_type': 'modify',
'new_path': 'a.cc',
'old_path': 'a.cc',
},
{
'change_type': 'modify',
'new_path': 'b.cc',
'old_path': 'b.cc',
},
],
'commit_url':
'https://repo.test/+/1',
'code_review_url': 'https://codereview.chromium.org/3281',
'revision': '1',
'reverted_revision': None
})
DUMMY_CHANGELOG2 = ChangeLog.FromDict({
'author': {
'name': 'e@chromium.org',
'email': 'e@chromium.org',
'time': 'Thu Mar 31 21:24:43 2016',
},
'committer': {
'name': 'e',
'email': 'e@chromium.org',
'time': 'Thu Mar 31 21:28:39 2016',
},
'message': 'dummy',
'commit_position': 175911,
'touched_files': [
{
'change_type': 'modify',
'new_path': 'a.cc',
'old_path': 'a.cc',
},
],
'commit_url':
'https://repo.test/+/2',
'code_review_url': 'https://codereview.chromium.org/3290',
'revision': '2',
'reverted_revision': None
})
class SuspectTest(unittest.TestCase):
def testSuspectToDict(self):
suspect = Suspect(DUMMY_CHANGELOG1, 'src/',
confidence=1, reasons=['MinDistance', 0.5, 'some reason'],
changed_files={'file': 'f', 'blame_url': 'http://b',
'info': 'min distance (LOC) 5'})
expected_suspect_json = {
'url': DUMMY_CHANGELOG1.commit_url,
'review_url': DUMMY_CHANGELOG1.code_review_url,
'revision': DUMMY_CHANGELOG1.revision,
'project_path': 'src/',
'author': DUMMY_CHANGELOG1.author.email,
'time': str(DUMMY_CHANGELOG1.author.time),
'reasons': ['MinDistance', 0.5, 'some reason'],
'changed_files': {'file': 'f', 'blame_url': 'http://b',
'info': 'min distance (LOC) 5'},
'confidence': 1,
'description': 'dummy',
}
self.assertDictEqual(suspect.ToDict(), expected_suspect_json)
def testSuspectToString(self):
suspect = Suspect(DUMMY_CHANGELOG1, 'src/', confidence=1)
self.assertEqual(suspect.ToString(), str(suspect.ToDict()))
self.assertEqual(str(suspect), str(suspect.ToDict()))