blob: 19eb56e292af374d290c5ff040e98c7b140bb6b9 [file] [log] [blame]
# Copyright 2015 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 os
import sys
import unittest
_EXPERIMENTAL = os.path.join(os.path.dirname(__file__), os.pardir)
_CATAPULT = os.path.join(_EXPERIMENTAL, os.pardir)
# TODO(robertocn): Add these to sys.path conditionally.
sys.path.append(os.path.join(_CATAPULT, 'third_party', 'mock'))
sys.path.append(_EXPERIMENTAL)
import mock
from bisect_lib import chromium_revisions
FIRST_REVISION = '53fc07eb478520a80af6bf8b62be259bb55db0f1'
LAST_REVISION = 'c89130e28fd01062104e1be7f3a6fc3abbb80ca9'
TEST_DATA_LOCATION = os.path.join(os.path.dirname(__file__),
'test_data')
MOCK_INFO_RESPONSE_FILE = open(os.path.join(
TEST_DATA_LOCATION, 'MOCK_INFO_RESPONSE_FILE'))
MOCK_RANGE_RESPONSE_FILE = open(os.path.join(
TEST_DATA_LOCATION, 'MOCK_RANGE_RESPONSE_FILE'))
EXPECTED_INFO = {
'body':
'BUG=548160',
'date':
'Tue Oct 27 21:26:30 2015',
'subject':
'[Extensions] Fix hiding browser actions without the toolbar redesign',
'email':
'rdevlin.cronin@chromium.org',
'author':
'rdevlin.cronin'
}
INTERVENING_REVISIONS = [
'2e93263dc74f0496100435e1fd7232e9e8323af0',
'6feaa73a54d0515ad2940709161ca0a5ad91d1f8',
'3861789af25e2d3502f0fb7080da5785d31308aa',
'8fcc8af20a3d41b0512e3b1486e4dc7de528a72b',
'f1c777e3f97a16cc6a3aa922a23602fa59412989',
'ee261f306c3c66e96339aa1026d62a6d953302fe',
'7bd1741893bd4e233b5562a6926d7e395d558343',
'4f81be50501fbc02d7e44df0d56032e5885e19b6',
'8414732168a8867a5d6bd45eaade68a5820a9e34',
'01542ac6d0fbec6aa78e33e6c7ec49a582072ea9',
'66aeb2b7084850d09f3fccc7d7467b57e4da1882',
'48c1471f1f503246dd66753a4c7588d77282d2df',
'84f6037e951c21a3b00bd3ddd034f258da6839b5',
'ebd5f102ee89a4be5c98815c02c444fbf2b6b040',
'5dbc149bebecea186b693b3d780b6965eeffed0f',
'22e49fb496d6ffa122c470f6071d47ccb4ccb672',
'07a6d9854efab6677b880defa924758334cfd47d',
'32ce3b13924d84004a3e05c35942626cbe93cbbd',
]
class ChromiumRevisionsTest(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def testRevisionInfo(self):
with mock.patch('urllib2.urlopen', mock.MagicMock(
return_value=MOCK_INFO_RESPONSE_FILE)):
test_info = chromium_revisions.revision_info(LAST_REVISION)
for key in EXPECTED_INFO:
self.assertIn(EXPECTED_INFO[key], test_info[key])
def testRevisionRange(self):
with mock.patch('urllib2.urlopen', mock.MagicMock(
return_value=MOCK_RANGE_RESPONSE_FILE)):
rev_list = chromium_revisions.revision_range(
FIRST_REVISION, LAST_REVISION)
commits_only = [entry['commit'] for entry in rev_list]
for r in INTERVENING_REVISIONS:
self.assertIn(r, commits_only)
self.assertIn(LAST_REVISION, commits_only)
self.assertEqual(len(INTERVENING_REVISIONS) + 1,
len(rev_list))
if __name__ == '__main__':
unittest.main()