Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Unit tests for commit_queue.py.""" | 6 """Unit tests for commit_queue.py.""" |
| 7 | 7 |
| 8 import logging | |
| 8 import os | 9 import os |
| 9 import StringIO | 10 import StringIO |
| 10 import sys | 11 import sys |
| 11 import time | 12 import time |
| 13 import traceback | |
| 12 import unittest | 14 import unittest |
| 13 | 15 |
| 14 ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) | 16 ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| 15 sys.path.insert(0, os.path.join(ROOT_DIR, '..')) | 17 sys.path.insert(0, os.path.join(ROOT_DIR, '..')) |
| 16 | 18 |
| 17 import commit_queue | 19 import commit_queue |
| 18 import context | 20 import context |
| 19 import creds | 21 import creds |
| 20 | 22 |
| 21 from testing_support import auto_stub | 23 from testing_support import auto_stub |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 66 return '1%s1' % user | 68 return '1%s1' % user |
| 67 | 69 |
| 68 | 70 |
| 69 class CommitQueueTest(auto_stub.TestCase): | 71 class CommitQueueTest(auto_stub.TestCase): |
| 70 def setUp(self): | 72 def setUp(self): |
| 71 super(CommitQueueTest, self).setUp() | 73 super(CommitQueueTest, self).setUp() |
| 72 self.mock(sys, 'argv', ['commit_queue.py']) | 74 self.mock(sys, 'argv', ['commit_queue.py']) |
| 73 self.mock(sys, 'stdout', StringIO.StringIO()) | 75 self.mock(sys, 'stdout', StringIO.StringIO()) |
| 74 self.mock(sys, 'stderr', StringIO.StringIO()) | 76 self.mock(sys, 'stderr', StringIO.StringIO()) |
| 75 self.mock(commit_queue.projects, 'load_project', None) | 77 self.mock(commit_queue.projects, 'load_project', None) |
| 78 commit_queue.SetupLogging = lambda _: None | |
|
M-A Ruel
2013/08/26 19:23:39
self.mock(commit_queue, 'SetupLogging', lambda _:
| |
| 79 # Setup logging attached to the mocked sys.stderr, printing | |
| 80 # only the exception name to make tests not fragile. | |
| 81 handler = logging.StreamHandler() | |
| 82 formatter = logging.Formatter() | |
| 83 formatter.formatException = lambda _: traceback.format_exc(0) | |
| 84 handler.setFormatter(formatter) | |
| 85 logging.getLogger().handlers = [handler] | |
| 76 self._time = 1 | 86 self._time = 1 |
| 77 self.mock(time, 'time', self._get_time) | 87 self.mock(time, 'time', self._get_time) |
| 78 self.mock(creds, 'Credentials', self._get_cred) | 88 self.mock(creds, 'Credentials', self._get_cred) |
| 79 | 89 |
| 80 def tearDown(self): | 90 def tearDown(self): |
| 81 try: | 91 try: |
| 82 if not self.has_failed(): | 92 if not self.has_failed(): |
| 83 self._check('stdout', '') | 93 self._check('stdout', '') |
| 84 self._check('stderr', '') | 94 self._check('stderr', '') |
| 85 finally: | 95 finally: |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 135 self.assertEqual('chromium', calls[0][0]) | 145 self.assertEqual('chromium', calls[0][0]) |
| 136 self.assertEqual('commit-bot@chromium.org', calls[0][1]) | 146 self.assertEqual('commit-bot@chromium.org', calls[0][1]) |
| 137 self.assertEqual( | 147 self.assertEqual( |
| 138 os.path.join(os.path.dirname(ROOT_DIR), 'workdir'), calls[0][2]) | 148 os.path.join(os.path.dirname(ROOT_DIR), 'workdir'), calls[0][2]) |
| 139 self.assertEqual(None, calls[0][4]) | 149 self.assertEqual(None, calls[0][4]) |
| 140 self._check( | 150 self._check( |
| 141 'stdout', | 151 'stdout', |
| 142 'Using read-only Rietveld\n' | 152 'Using read-only Rietveld\n' |
| 143 'Using read-only checkout\n' | 153 'Using read-only checkout\n' |
| 144 'Using read-only chromium-status interface\n') | 154 'Using read-only chromium-status interface\n') |
| 145 self._check('stderr', 'Saving db... \nDone! \n') | 155 self._check( |
| 156 'stderr', | |
| 157 'CQ loop terminating\n' | |
| 158 'Traceback (most recent call last):\n' | |
| 159 'Stop\n\n' | |
| 160 'Saving db...\ndb save successful.\n') | |
| 146 | 161 |
| 147 def testDryRun(self): | 162 def testDryRun(self): |
| 148 sys.argv.extend(('--project', 'chromium')) | 163 sys.argv.extend(('--project', 'chromium')) |
| 149 pc = PendingManagerMock(self) | 164 pc = PendingManagerMock(self) |
| 150 self.mock( | 165 self.mock( |
| 151 commit_queue.projects, | 166 commit_queue.projects, |
| 152 'load_project', | 167 'load_project', |
| 153 lambda *args: pc) | 168 lambda *args: pc) |
| 154 try: | 169 try: |
| 155 commit_queue.main() | 170 commit_queue.main() |
| 156 self.fail() | 171 self.fail() |
| 157 except Stop: | 172 except Stop: |
| 158 pass | 173 pass |
| 159 self.assertEqual( | 174 self.assertEqual( |
| 160 'ReadOnlyCheckout', pc.context.checkout.__class__.__name__) | 175 'ReadOnlyCheckout', pc.context.checkout.__class__.__name__) |
| 161 # Ugh. | 176 # Ugh. |
| 162 self.assertEqual( | 177 self.assertEqual( |
| 163 'RietveldMock', pc.context.rietveld.__class__.__name__) | 178 'RietveldMock', pc.context.rietveld.__class__.__name__) |
| 164 self._check( | 179 self._check( |
| 165 'stdout', | 180 'stdout', |
| 166 'Using read-only Rietveld\n' | 181 'Using read-only Rietveld\n' |
| 167 'Using read-only checkout\n' | 182 'Using read-only checkout\n' |
| 168 'Using read-only chromium-status interface\n') | 183 'Using read-only chromium-status interface\n') |
| 169 self._check('stderr', 'Saving db... \nDone! \n') | 184 self._check( |
| 185 'stderr', | |
| 186 'CQ loop terminating\n' | |
| 187 'Traceback (most recent call last):\n' | |
| 188 'Stop\n\n' | |
| 189 'Saving db...\ndb save successful.\n') | |
| 170 | 190 |
| 171 | 191 |
| 172 if __name__ == '__main__': | 192 if __name__ == '__main__': |
| 173 unittest.main() | 193 unittest.main() |
| OLD | NEW |