Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Side by Side Diff: tests/commit_queue_test.py

Issue 22866026: Log exceptions that terminate CQ loop (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/commit-queue@master
Patch Set: stub using self.mock Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « commit_queue.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 self.mock(commit_queue, 'SetupLogging', lambda _: None)
79 # Setup logging attached to the mocked sys.stderr, printing
80 # only the exception name to make tests less 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
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()
OLDNEW
« no previous file with comments | « commit_queue.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698