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

Side by Side Diff: tests/gclient_test.py

Issue 8135007: Improve logging and ease debugging. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: address review comments Created 9 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « gclient_utils.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) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 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 gclient.py. 6 """Unit tests for gclient.py.
7 7
8 See gclient_smoketest.py for integration tests. 8 See gclient_smoketest.py for integration tests.
9 """ 9 """
10 10
11 from __future__ import with_statement 11 from __future__ import with_statement
12 import Queue 12 import Queue
13 import logging 13 import logging
14 import os 14 import os
15 import sys 15 import sys
16 import unittest 16 import unittest
17 17
18 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 18 BASE_DIR = os.path.dirname(os.path.abspath(__file__))
19 sys.path.insert(0, os.path.dirname(BASE_DIR)) 19 sys.path.insert(0, os.path.dirname(BASE_DIR))
20 20
21 import gclient 21 import gclient
22 import gclient_utils
22 from tests import trial_dir 23 from tests import trial_dir
23 24
24 25
25 def write(filename, content): 26 def write(filename, content):
26 """Writes the content of a file and create the directories as needed.""" 27 """Writes the content of a file and create the directories as needed."""
27 filename = os.path.abspath(filename) 28 filename = os.path.abspath(filename)
28 dirname = os.path.dirname(filename) 29 dirname = os.path.dirname(filename)
29 if not os.path.isdir(dirname): 30 if not os.path.isdir(dirname):
30 os.makedirs(dirname) 31 os.makedirs(dirname)
31 with open(filename, 'w') as f: 32 with open(filename, 'w') as f:
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 actual.remove('svn://example.com/bar_empty') 156 actual.remove('svn://example.com/bar_empty')
156 self.assertEquals( 157 self.assertEquals(
157 [ 158 [
158 'svn://example.com/foo/dir1', 159 'svn://example.com/foo/dir1',
159 'svn://example.com/foo/dir1/dir2/dir3', 160 'svn://example.com/foo/dir1/dir2/dir3',
160 'svn://example.com/foo/dir1/dir2/dir3/dir4', 161 'svn://example.com/foo/dir1/dir2/dir3/dir4',
161 # TODO(maruel): This is probably wrong. 162 # TODO(maruel): This is probably wrong.
162 'svn://example.com/foo/dir1/dir2/dir3/dir4/dir1/another', 163 'svn://example.com/foo/dir1/dir2/dir3/dir4/dir1/another',
163 ], 164 ],
164 actual) 165 actual)
166
165 self._check_requirements( 167 self._check_requirements(
166 obj.dependencies[0], 168 obj.dependencies[0],
167 { 169 {
168 'foo/dir1': ['foo'], 170 'foo/dir1': ['foo'],
169 'foo/dir1/dir2/dir3': ['foo', 'foo/dir1', 'foo/dir1/dir2'], 171 'foo/dir1/dir2/dir3': ['foo', 'foo/dir1', 'foo/dir1/dir2'],
170 'foo/dir1/dir2/dir3/dir4': 172 'foo/dir1/dir2/dir3/dir4':
171 ['foo', 'foo/dir1', 'foo/dir1/dir2', 'foo/dir1/dir2/dir3'], 173 ['foo', 'foo/dir1', 'foo/dir1/dir2', 'foo/dir1/dir2/dir3'],
172 'foo/dir1/dir2/dir5/dir6': 174 'foo/dir1/dir2/dir5/dir6':
173 ['foo', 'foo/dir1', 'foo/dir1/dir2', 'foo/dir1/dir2/dir3/dir4'], 175 ['foo', 'foo/dir1', 'foo/dir1/dir2', 'foo/dir1/dir2/dir3/dir4'],
174 }) 176 })
(...skipping 10 matching lines...) Expand all
185 'bar/empty': ['bar'], 187 'bar/empty': ['bar'],
186 }) 188 })
187 189
188 def _check_requirements(self, solution, expected): 190 def _check_requirements(self, solution, expected):
189 for dependency in solution.dependencies: 191 for dependency in solution.dependencies:
190 self.assertEquals( 192 self.assertEquals(
191 expected.pop(dependency.name), sorted(dependency.requirements)) 193 expected.pop(dependency.name), sorted(dependency.requirements))
192 self.assertEquals({}, expected) 194 self.assertEquals({}, expected)
193 195
194 def _get_processed(self): 196 def _get_processed(self):
197 """Retrieves the item in the order they were processed."""
195 items = [] 198 items = []
196 try: 199 try:
197 while True: 200 while True:
198 items.append(self.processed.get_nowait()) 201 items.append(self.processed.get_nowait())
199 except Queue.Empty: 202 except Queue.Empty:
200 pass 203 pass
201 return items 204 return items
202 205
203 def testAutofix(self): 206 def testAutofix(self):
204 # Invalid urls causes pain when specifying requirements. Make sure it's 207 # Invalid urls causes pain when specifying requirements. Make sure it's
(...skipping 27 matching lines...) Expand all
232 obj.dependencies[0]._dependencies.append( 235 obj.dependencies[0]._dependencies.append(
233 gclient.Dependency( 236 gclient.Dependency(
234 obj.dependencies[0], 'foo/dir3', 237 obj.dependencies[0], 'foo/dir3',
235 gclient.GClientKeywords.FileImpl('url'), None, None, None, None, 238 gclient.GClientKeywords.FileImpl('url'), None, None, None, None,
236 'DEPS', True)) 239 'DEPS', True))
237 obj.dependencies[0]._file_list.append('foo') 240 obj.dependencies[0]._file_list.append('foo')
238 self.assertEquals(434, len(str(obj)), '%d\n%s' % (len(str(obj)), str(obj))) 241 self.assertEquals(434, len(str(obj)), '%d\n%s' % (len(str(obj)), str(obj)))
239 242
240 243
241 if __name__ == '__main__': 244 if __name__ == '__main__':
245 sys.stdout = gclient_utils.MakeFileAutoFlush(sys.stdout)
246 sys.stdout = gclient_utils.MakeFileAnnotated(sys.stdout, include_zero=True)
247 sys.stderr = gclient_utils.MakeFileAutoFlush(sys.stderr)
248 sys.stderr = gclient_utils.MakeFileAnnotated(sys.stderr, include_zero=True)
242 logging.basicConfig( 249 logging.basicConfig(
243 level=[logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG][ 250 level=[logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG][
244 min(sys.argv.count('-v'), 3)], 251 min(sys.argv.count('-v'), 3)],
245 format='%(asctime).19s %(levelname)s %(filename)s:' 252 format='%(relativeCreated)4d %(levelname)5s %(module)13s('
246 '%(lineno)s %(message)s') 253 '%(lineno)d) %(message)s')
247 unittest.main() 254 unittest.main()
OLDNEW
« no previous file with comments | « gclient_utils.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698