Index: commit-queue/tests/mocks.py |
=================================================================== |
--- commit-queue/tests/mocks.py (revision 249146) |
+++ commit-queue/tests/mocks.py (working copy) |
@@ -1,276 +0,0 @@ |
-# Copyright (c) 2012 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. |
- |
-"""Common mocks.""" |
- |
-import copy |
-import os |
-import sys |
- |
-ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) |
-sys.path.insert(0, os.path.join(ROOT_DIR, '..')) |
- |
-import find_depot_tools # pylint: disable=W0611 |
-import breakpad |
-import patch |
- |
-import async_push |
-import context |
-import pending_manager |
- |
-from testing_support import auto_stub |
- |
- |
-SVN_PATCH = ( |
- 'Index: chrome/file.cc\n' |
- '===================================================================\n' |
- '--- chrome/file.cc\t(revision 74690)\n' |
- '+++ chrome/file.cc\t(working copy)\n' |
- '@@ -80,10 +80,10 @@\n' |
- ' // Foo\n' |
- ' // Bar\n' |
- ' void foo() {\n' |
- '- return bar;\n' |
- '+ return foo;\n' |
- ' }\n' |
- ' \n' |
- ' \n') |
- |
- |
-class RietveldMock(auto_stub.SimpleMock): |
- url = 'http://nowhere' |
- email = 'fake_email' |
- password = 'fake_password' |
- |
- def __init__(self, unit_test): |
- super(RietveldMock, self).__init__(unit_test) |
- self.issues = { |
- 31337: { |
- "description": u"foo", |
- "created": "2010-12-27 03:23:31.149045", |
- "cc": ["cc@example.com",], |
- "reviewers": ["rev@example.com"], |
- "owner_email": "author@example.com", |
- "patchsets": [1], |
- "modified": "2011-01-10 20:52:39.127231", |
- "private": False, |
- "base_url": "svn://fake/repo", |
- "closed": False, |
- "owner": "Author", |
- "issue": 31337, |
- "subject": 'foo', |
- "messages": [ |
- { |
- "date": "2010-12-27 03:23:32.489999", |
- "text": u"hi!", |
- "sender": "author@example.com", |
- "recipients": ["rev@example.com", "cc@example.com"], |
- "approval": False, |
- }, |
- { |
- "date": "2010-12-27 03:23:32.489999", |
- "text": u"hi!", |
- "sender": "rev@example.com", |
- "recipients": ["rev@example.com", "cc@example.com"], |
- "approval": True, |
- }, |
- ], |
- "commit": True, |
- }, |
- } |
- self.patchsets = [] |
- # Key is (issue, patchset) |
- self.patchsets_properties = {} |
- |
- def get_pending_issues(self): |
- return self.issues.keys() |
- |
- def get_issue_properties(self, issue_id, _): |
- return copy.deepcopy(self.issues[issue_id]) |
- |
- def get_patchset_properties(self, issue_id, patchset): |
- key = (issue_id, patchset) |
- self.unit_test.assertTrue( |
- key in self.patchsets_properties, (key, self.patchsets_properties)) |
- return copy.deepcopy(self.patchsets_properties[key]) |
- |
- def close_issue(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- |
- def update_description(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- |
- def set_flag(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- return True |
- |
- def add_comment(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- |
- def get_patch(self, _issue, _patchset): |
- self.patchsets.append(patch.PatchSet([ |
- patch.FilePatchDiff('chrome/file.cc', SVN_PATCH, []), |
- patch.FilePatchDelete('other/place/foo', True), |
- patch.FilePatchBinary('foo', 'data', [], True), |
- ])) |
- return self.patchsets[-1] |
- |
- def _send(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- |
- def trigger_try_jobs(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- |
- @staticmethod |
- def xsrf_token(): |
- return 'XSRF-free' |
- |
- def post(self, *args, **kwargs): |
- self._register_call(*args, **kwargs) |
- |
- |
-class SvnCheckoutMock(auto_stub.SimpleMock): |
- def __init__(self, *args): |
- super(SvnCheckoutMock, self).__init__(*args) |
- self.project_path = os.getcwd() |
- self.project_name = os.path.basename(self.project_path) |
- self.post_processors = [] |
- |
- def prepare(self, revision): |
- self._register_call(revision) |
- # prepare() should always return a valid revision. |
- return revision or 124 |
- |
- def apply_patch(self, *args): |
- self._register_call(*args) |
- |
- def commit(self, *args): |
- self._register_call(*args) |
- return 125 |
- |
- @staticmethod |
- def get_settings(_key): |
- return None |
- |
- @staticmethod |
- def revisions(_revision1, _revision2): |
- """Number of revisions between 2 revisions.""" |
- return 3 |
- |
- |
-class AsyncPushMock(auto_stub.SimpleMock, async_push.AsyncPushNoop): |
- def __init__(self, *args): |
- auto_stub.SimpleMock.__init__(self, *args) |
- async_push.AsyncPushNoop.__init__(self) |
- self.queue = [] |
- |
- def send(self, packet, pending): |
- self.queue.append(self._package(packet, pending)) |
- |
- def pop_packets(self): |
- packets = self.queue |
- self.queue = [] |
- return packets |
- |
- def check_packets(self, expected): |
- self.assertEqual(expected, self.pop_packets()) |
- |
- def check_names(self, expected): |
- self.assertEqual(expected, [i['verification'] for i in self.pop_packets()]) |
- |
- |
-class BuildbotBuilder(object): |
- def __init__(self): |
- self.builds = {} |
- class Data(object): |
- def __init__(self): |
- self.data = {} |
- self.pending_builds = Data() |
- |
- |
-class BuildbotBuild(object): |
- def __init__(self, revision, key, completed, parent_key): |
- self.properties_as_dict = { |
- 'try_job_key': key, |
- 'parent_try_job_key': parent_key, |
- } |
- self.revision = revision |
- self.start_time = 1 |
- self.steps = [] |
- self.completed = completed |
- self.duration = 180 |
- |
- |
-class BuildbotBuildStep(object): |
- def __init__(self, name, result): |
- self.name = name |
- self.simplified_result = result |
- |
- |
-class BuildbotBuilders(object): |
- def __init__(self, initial): |
- self.values = initial.copy() |
- |
- def __getitem__(self, key): |
- return self.values[key] |
- |
- @property |
- def keys(self): |
- return self.values.keys() |
- |
- def setdefault(self, key, value): |
- return self.values.setdefault(key, value) |
- |
- |
-class BuildbotMock(auto_stub.SimpleMock): |
- """Stateful try server mock.""" |
- |
- def __init__(self, unit_test): |
- super(BuildbotMock, self).__init__(unit_test) |
- self.builders = BuildbotBuilders({ |
- u'mac': BuildbotBuilder(), |
- u'linux': BuildbotBuilder(), |
- }) |
- |
- def discard(self): |
- pass |
- |
- def add_build(self, builder, number, revision, key, completed, parent_key): |
- """Add a build to a builder.""" |
- builder = self.builders.setdefault(builder, BuildbotBuilder()) |
- builder.builds[number] = BuildbotBuild(revision, key, completed, parent_key) |
- return builder.builds[number] |
- |
- |
-class TestCase(auto_stub.TestCase): |
- def setUp(self): |
- super(TestCase, self).setUp() |
- self.mock(breakpad, 'SendStack', self._send_stack_mock) |
- self.context = context.Context( |
- RietveldMock(self), SvnCheckoutMock(self), AsyncPushMock(self), False) |
- self.pending = pending_manager.PendingCommit( |
- issue=42, |
- owner='owner@example.com', |
- reviewers=[], |
- patchset=23, |
- base_url='', |
- description=u'bleh', |
- messages=[]) |
- |
- def tearDown(self): |
- try: |
- if not self.has_failed(): |
- self.context.rietveld.check_calls([]) |
- self.context.checkout.check_calls([]) |
- self.context.status.check_packets([]) |
- finally: |
- super(TestCase, self).tearDown() |
- |
- def _send_stack_mock(self, last_tb, stack, *_args, **_kwargs): |
- """Fails a test that calls SendStack. |
- |
- In practice it doesn't happen when a test pass but will when a test fails so |
- hook it here so breakpad doesn't send too many stack traces to maintainers. |
- """ |
- self.fail('%s, %s' % (last_tb, stack)) |