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

Side by Side Diff: tests/checkout_test.py

Issue 8066012: Share more data between checkout_test and patches_data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: 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 | « no previous file | tests/patch_test.py » ('j') | 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 checkout.py.""" 6 """Unit tests for checkout.py."""
7 7
8 from __future__ import with_statement 8 from __future__ import with_statement
9 import logging 9 import logging
10 import os 10 import os
11 import shutil 11 import shutil
12 import sys 12 import sys
13 import unittest 13 import unittest
14 from xml.etree import ElementTree 14 from xml.etree import ElementTree
15 15
16 ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) 16 ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
17 BASE_DIR = os.path.join(ROOT_DIR, '..') 17 BASE_DIR = os.path.join(ROOT_DIR, '..')
18 sys.path.insert(0, BASE_DIR) 18 sys.path.insert(0, BASE_DIR)
19 19
20 import checkout 20 import checkout
21 import patch 21 import patch
22 import subprocess2 22 import subprocess2
23 from tests import fake_repos 23 from tests import fake_repos
24 from tests.patches_data import GIT, RAW
24 25
25 26
26 # pass -v to enable it. 27 # pass -v to enable it.
27 DEBUGGING = False 28 DEBUGGING = False
28 29
29 # A naked patch.
30 NAKED_PATCH = ("""\
31 --- svn_utils_test.txt
32 +++ svn_utils_test.txt
33 @@ -3,6 +3,7 @@ bb
34 ccc
35 dd
36 e
37 +FOO!
38 ff
39 ggg
40 hh
41 """)
42
43 # A patch generated from git.
44 GIT_PATCH = ("""\
45 diff --git a/svn_utils_test.txt b/svn_utils_test.txt
46 index 0e4de76..8320059 100644
47 --- a/svn_utils_test.txt
48 +++ b/svn_utils_test.txt
49 @@ -3,6 +3,7 @@ bb
50 ccc
51 dd
52 e
53 +FOO!
54 ff
55 ggg
56 hh
57 """)
58
59 # A patch that will fail to apply. 30 # A patch that will fail to apply.
60 BAD_PATCH = ("""\ 31 BAD_PATCH = ''.join(
61 diff --git a/svn_utils_test.txt b/svn_utils_test.txt 32 [l for l in GIT.PATCH.splitlines(True) if l.strip() != 'e'])
62 index 0e4de76..8320059 100644
63 --- a/svn_utils_test.txt
64 +++ b/svn_utils_test.txt
65 @@ -3,7 +3,8 @@ bb
66 ccc
67 dd
68 +FOO!
69 ff
70 ggg
71 hh
72 """)
73
74 PATCH_ADD = ("""\
75 diff --git a/new_dir/subdir/new_file b/new_dir/subdir/new_file
76 new file mode 100644
77 --- /dev/null
78 +++ b/new_dir/subdir/new_file
79 @@ -0,0 +1,2 @@
80 +A new file
81 +should exist.
82 """)
83 33
84 34
85 class FakeRepos(fake_repos.FakeReposBase): 35 class FakeRepos(fake_repos.FakeReposBase):
86 def populateSvn(self): 36 def populateSvn(self):
87 """Creates a few revisions of changes files.""" 37 """Creates a few revisions of changes files."""
88 subprocess2.check_call( 38 subprocess2.check_call(
89 ['svn', 'checkout', self.svn_base, self.svn_checkout, '-q', 39 ['svn', 'checkout', self.svn_base, self.svn_checkout, '-q',
90 '--non-interactive', '--no-auth-cache', 40 '--non-interactive', '--no-auth-cache',
91 '--username', self.USERS[0][0], '--password', self.USERS[0][1]]) 41 '--username', self.USERS[0][0], '--password', self.USERS[0][1]])
92 assert os.path.isdir(os.path.join(self.svn_checkout, '.svn')) 42 assert os.path.isdir(os.path.join(self.svn_checkout, '.svn'))
93 fs = {} 43 fs = {}
94 fs['trunk/origin'] = 'svn@1' 44 fs['trunk/origin'] = 'svn@1'
95 fs['trunk/codereview.settings'] = ( 45 fs['trunk/codereview.settings'] = (
96 '# Test data\n' 46 '# Test data\n'
97 'bar: pouet\n') 47 'bar: pouet\n')
98 fs['trunk/svn_utils_test.txt'] = ( 48 fs['trunk/chrome/file.cc'] = (
99 'a\n' 49 'a\n'
100 'bb\n' 50 'bb\n'
101 'ccc\n' 51 'ccc\n'
102 'dd\n' 52 'dd\n'
103 'e\n' 53 'e\n'
104 'ff\n' 54 'ff\n'
105 'ggg\n' 55 'ggg\n'
106 'hh\n' 56 'hh\n'
107 'i\n' 57 'i\n'
108 'jj\n' 58 'jj\n'
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 subprocess2.call = redirect_call 92 subprocess2.call = redirect_call
143 self.usr, self.pwd = self.FAKE_REPOS.USERS[0] 93 self.usr, self.pwd = self.FAKE_REPOS.USERS[0]
144 self.previous_log = None 94 self.previous_log = None
145 95
146 def tearDown(self): 96 def tearDown(self):
147 subprocess2.call = self._old_call 97 subprocess2.call = self._old_call
148 super(BaseTest, self).tearDown() 98 super(BaseTest, self).tearDown()
149 99
150 def get_patches(self): 100 def get_patches(self):
151 return patch.PatchSet([ 101 return patch.PatchSet([
152 patch.FilePatchDiff(
153 'svn_utils_test.txt', GIT_PATCH, []),
154 # TODO(maruel): Test with is_new == False. 102 # TODO(maruel): Test with is_new == False.
155 patch.FilePatchBinary('bin_file', '\x00', [], is_new=True), 103 patch.FilePatchBinary('bin_file', '\x00', [], is_new=True),
104 patch.FilePatchDiff(
105 'chrome/file.cc', GIT.PATCH, []),
106 patch.FilePatchDiff('new_dir/subdir/new_file', GIT.NEW_SUBDIR, []),
156 patch.FilePatchDelete('extra', False), 107 patch.FilePatchDelete('extra', False),
157 patch.FilePatchDiff('new_dir/subdir/new_file', PATCH_ADD, []),
158 ]) 108 ])
159 109
160 def get_trunk(self, modified): 110 def get_trunk(self, modified):
161 tree = {} 111 tree = {}
162 subroot = 'trunk/' 112 subroot = 'trunk/'
163 for k, v in self.FAKE_REPOS.svn_revs[-1].iteritems(): 113 for k, v in self.FAKE_REPOS.svn_revs[-1].iteritems():
164 if k.startswith(subroot): 114 if k.startswith(subroot):
165 f = k[len(subroot):] 115 f = k[len(subroot):]
166 assert f not in tree 116 assert f not in tree
167 tree[f] = v 117 tree[f] = v
168 118
169 if modified: 119 if modified:
170 content_lines = tree['svn_utils_test.txt'].splitlines(True) 120 content_lines = tree['chrome/file.cc'].splitlines(True)
171 tree['svn_utils_test.txt'] = ''.join( 121 tree['chrome/file.cc'] = ''.join(
172 content_lines[0:5] + ['FOO!\n'] + content_lines[5:]) 122 content_lines[0:5] + ['FOO!\n'] + content_lines[5:])
173 del tree['extra'] 123 del tree['extra']
174 tree['new_dir/subdir/new_file'] = 'A new file\nshould exist.\n' 124 tree['new_dir/subdir/new_file'] = 'A new file\nshould exist.\n'
175 return tree 125 return tree
176 126
177 def _check_base(self, co, root, git, expected): 127 def _check_base(self, co, root, git, expected):
178 read_only = isinstance(co, checkout.ReadOnlyCheckout) 128 read_only = isinstance(co, checkout.ReadOnlyCheckout)
179 assert not read_only == bool(expected) 129 assert not read_only == bool(expected)
180 if not read_only: 130 if not read_only:
181 self.FAKE_REPOS.svn_dirty = True 131 self.FAKE_REPOS.svn_dirty = True
182 132
183 self.assertEquals(root, co.project_path) 133 self.assertEquals(root, co.project_path)
184 self.assertEquals(self.previous_log['revision'], co.prepare(None)) 134 self.assertEquals(self.previous_log['revision'], co.prepare(None))
185 self.assertEquals('pouet', co.get_settings('bar')) 135 self.assertEquals('pouet', co.get_settings('bar'))
186 self.assertTree(self.get_trunk(False), root) 136 self.assertTree(self.get_trunk(False), root)
187 patches = self.get_patches() 137 patches = self.get_patches()
188 co.apply_patch(patches) 138 co.apply_patch(patches)
189 self.assertEquals( 139 self.assertEquals(
190 ['bin_file', 'extra', 'new_dir/subdir/new_file', 'svn_utils_test.txt'], 140 ['bin_file', 'chrome/file.cc', 'new_dir/subdir/new_file', 'extra'],
191 sorted(patches.filenames)) 141 patches.filenames)
192 142
193 if git: 143 if git:
194 # Hackish to verify _branches() internal function. 144 # Hackish to verify _branches() internal function.
195 # pylint: disable=W0212 145 # pylint: disable=W0212
196 self.assertEquals( 146 self.assertEquals(
197 (['master', 'working_branch'], 'working_branch'), 147 (['master', 'working_branch'], 'working_branch'),
198 co.checkout._branches()) 148 co.checkout._branches())
199 149
200 # Verify that the patch is applied even for read only checkout. 150 # Verify that the patch is applied even for read only checkout.
201 self.assertTree(self.get_trunk(True), root) 151 self.assertTree(self.get_trunk(True), root)
(...skipping 16 matching lines...) Expand all
218 expected['msg'] = 'msg' 168 expected['msg'] = 'msg'
219 expected['revision'] = self.previous_log['revision'] + 1 169 expected['revision'] = self.previous_log['revision'] + 1
220 expected.setdefault('author', fake_author) 170 expected.setdefault('author', fake_author)
221 171
222 actual = self._log() 172 actual = self._log()
223 self.assertEquals(expected, actual) 173 self.assertEquals(expected, actual)
224 174
225 def _check_exception(self, co, err_msg): 175 def _check_exception(self, co, err_msg):
226 co.prepare(None) 176 co.prepare(None)
227 try: 177 try:
228 co.apply_patch([patch.FilePatchDiff('svn_utils_test.txt', BAD_PATCH, [])]) 178 co.apply_patch([patch.FilePatchDiff('chrome/file.cc', BAD_PATCH, [])])
229 self.fail() 179 self.fail()
230 except checkout.PatchApplicationFailed, e: 180 except checkout.PatchApplicationFailed, e:
231 self.assertEquals(e.filename, 'svn_utils_test.txt') 181 self.assertEquals(e.filename, 'chrome/file.cc')
232 self.assertEquals(e.status, err_msg) 182 self.assertEquals(e.status, err_msg)
233 183
234 def _log(self): 184 def _log(self):
235 raise NotImplementedError() 185 raise NotImplementedError()
236 186
237 def _test_process(self, co_lambda): 187 def _test_process(self, co_lambda):
238 """Makes sure the process lambda is called correctly.""" 188 """Makes sure the process lambda is called correctly."""
239 post_processors = [lambda *args: results.append(args)] 189 post_processors = [lambda *args: results.append(args)]
240 co = co_lambda(post_processors) 190 co = co_lambda(post_processors)
241 self.assertEquals(post_processors, co.post_processors) 191 self.assertEquals(post_processors, co.post_processors)
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 258 }
309 self._check(False, expected) 259 self._check(False, expected)
310 260
311 def testAllRO(self): 261 def testAllRO(self):
312 self._check(True, None) 262 self._check(True, None)
313 263
314 def testException(self): 264 def testException(self):
315 self._check_exception( 265 self._check_exception(
316 self._get_co(True), 266 self._get_co(True),
317 'While running patch -p1 --forward --force;\n' 267 'While running patch -p1 --forward --force;\n'
318 'patching file svn_utils_test.txt\n' 268 'patching file chrome/file.cc\n'
319 'Hunk #1 FAILED at 3.\n' 269 'Hunk #1 FAILED at 3.\n'
320 '1 out of 1 hunk FAILED -- saving rejects to file ' 270 '1 out of 1 hunk FAILED -- saving rejects to file '
321 'svn_utils_test.txt.rej\n') 271 'chrome/file.cc.rej\n')
322 272
323 def testSvnProps(self): 273 def testSvnProps(self):
324 co = self._get_co(False) 274 co = self._get_co(False)
325 co.prepare(None) 275 co.prepare(None)
326 try: 276 try:
327 # svn:ignore can only be applied to directories. 277 # svn:ignore can only be applied to directories.
328 svn_props = [('svn:ignore', 'foo')] 278 svn_props = [('svn:ignore', 'foo')]
329 co.apply_patch( 279 co.apply_patch(
330 [patch.FilePatchDiff('svn_utils_test.txt', NAKED_PATCH, svn_props)]) 280 [patch.FilePatchDiff('chrome/file.cc', RAW.PATCH, svn_props)])
331 self.fail() 281 self.fail()
332 except checkout.PatchApplicationFailed, e: 282 except checkout.PatchApplicationFailed, e:
333 self.assertEquals(e.filename, 'svn_utils_test.txt') 283 self.assertEquals(e.filename, 'chrome/file.cc')
334 self.assertEquals( 284 self.assertEquals(
335 e.status, 285 e.status,
336 'While running svn propset svn:ignore foo svn_utils_test.txt ' 286 'While running svn propset svn:ignore foo chrome/file.cc '
337 '--non-interactive;\n' 287 '--non-interactive;\n'
338 'patching file svn_utils_test.txt\n' 288 'patching file chrome/file.cc\n'
339 'svn: Cannot set \'svn:ignore\' on a file (\'svn_utils_test.txt\')\n') 289 'svn: Cannot set \'svn:ignore\' on a file (\'chrome/file.cc\')\n')
340 co.prepare(None) 290 co.prepare(None)
341 svn_props = [('svn:eol-style', 'LF'), ('foo', 'bar')] 291 svn_props = [('svn:eol-style', 'LF'), ('foo', 'bar')]
342 co.apply_patch( 292 co.apply_patch(
343 [patch.FilePatchDiff('svn_utils_test.txt', NAKED_PATCH, svn_props)]) 293 [patch.FilePatchDiff('chrome/file.cc', RAW.PATCH, svn_props)])
344 filepath = os.path.join(self.root_dir, self.name, 'svn_utils_test.txt') 294 filepath = os.path.join(self.root_dir, self.name, 'chrome/file.cc')
345 # Manually verify the properties. 295 # Manually verify the properties.
346 props = subprocess2.check_output( 296 props = subprocess2.check_output(
347 ['svn', 'proplist', filepath], 297 ['svn', 'proplist', filepath],
348 cwd=self.root_dir).splitlines()[1:] 298 cwd=self.root_dir).splitlines()[1:]
349 props = sorted(p.strip() for p in props) 299 props = sorted(p.strip() for p in props)
350 expected_props = dict(svn_props) 300 expected_props = dict(svn_props)
351 self.assertEquals(sorted(expected_props.iterkeys()), props) 301 self.assertEquals(sorted(expected_props.iterkeys()), props)
352 for k, v in expected_props.iteritems(): 302 for k, v in expected_props.iteritems():
353 value = subprocess2.check_output( 303 value = subprocess2.check_output(
354 ['svn', 'propget', '--strict', k, filepath], 304 ['svn', 'propget', '--strict', k, filepath],
(...skipping 26 matching lines...) Expand all
381 self._check_base(co, root, False, expected) 331 self._check_base(co, root, False, expected)
382 332
383 def testAutoProps(self): 333 def testAutoProps(self):
384 co = self._get_co(False) 334 co = self._get_co(False)
385 co.svn_config = checkout.SvnConfig( 335 co.svn_config = checkout.SvnConfig(
386 os.path.join(ROOT_DIR, 'subversion_config')) 336 os.path.join(ROOT_DIR, 'subversion_config'))
387 co.prepare(None) 337 co.prepare(None)
388 patches = self.get_patches() 338 patches = self.get_patches()
389 co.apply_patch(patches) 339 co.apply_patch(patches)
390 self.assertEquals( 340 self.assertEquals(
391 ['bin_file', 'extra', 'new_dir/subdir/new_file', 'svn_utils_test.txt'], 341 ['bin_file', 'chrome/file.cc', 'new_dir/subdir/new_file', 'extra'],
392 sorted(patches.filenames)) 342 patches.filenames)
393 # *.txt = svn:eol-style=LF in subversion_config/config. 343 # *.txt = svn:eol-style=LF in subversion_config/config.
394 out = subprocess2.check_output( 344 out = subprocess2.check_output(
395 ['svn', 'pget', 'svn:eol-style', 'svn_utils_test.txt'], 345 ['svn', 'pget', 'svn:eol-style', 'chrome/file.cc'],
396 cwd=co.project_path) 346 cwd=co.project_path)
397 self.assertEquals('LF\n', out) 347 self.assertEquals('LF\n', out)
398 348
399 def testProcess(self): 349 def testProcess(self):
400 co = lambda x: checkout.SvnCheckout( 350 co = lambda x: checkout.SvnCheckout(
401 self.root_dir, self.name, 351 self.root_dir, self.name,
402 None, None, 352 None, None,
403 self.svn_url, 353 self.svn_url,
404 x) 354 x)
405 self._test_process(co) 355 self._test_process(co)
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 def testException(self): 407 def testException(self):
458 self._check_exception( 408 self._check_exception(
459 self._get_co(True), 'fatal: corrupt patch at line 12\n') 409 self._get_co(True), 'fatal: corrupt patch at line 12\n')
460 410
461 def testSvnProps(self): 411 def testSvnProps(self):
462 co = self._get_co(False) 412 co = self._get_co(False)
463 co.prepare(None) 413 co.prepare(None)
464 try: 414 try:
465 svn_props = [('foo', 'bar')] 415 svn_props = [('foo', 'bar')]
466 co.apply_patch( 416 co.apply_patch(
467 [patch.FilePatchDiff('svn_utils_test.txt', NAKED_PATCH, svn_props)]) 417 [patch.FilePatchDiff('chrome/file.cc', RAW.PATCH, svn_props)])
468 self.fail() 418 self.fail()
469 except patch.UnsupportedPatchFormat, e: 419 except patch.UnsupportedPatchFormat, e:
470 self.assertEquals(e.filename, 'svn_utils_test.txt') 420 self.assertEquals(e.filename, 'chrome/file.cc')
471 self.assertEquals( 421 self.assertEquals(
472 e.status, 422 e.status,
473 'Cannot apply svn property foo to file svn_utils_test.txt.') 423 'Cannot apply svn property foo to file chrome/file.cc.')
474 co.prepare(None) 424 co.prepare(None)
475 # svn:eol-style is ignored. 425 # svn:eol-style is ignored.
476 svn_props = [('svn:eol-style', 'LF')] 426 svn_props = [('svn:eol-style', 'LF')]
477 co.apply_patch( 427 co.apply_patch(
478 [patch.FilePatchDiff('svn_utils_test.txt', NAKED_PATCH, svn_props)]) 428 [patch.FilePatchDiff('chrome/file.cc', RAW.PATCH, svn_props)])
479 429
480 def testProcess(self): 430 def testProcess(self):
481 co = lambda x: checkout.SvnCheckout( 431 co = lambda x: checkout.SvnCheckout(
482 self.root_dir, self.name, 432 self.root_dir, self.name,
483 None, None, 433 None, None,
484 self.svn_url, x) 434 self.svn_url, x)
485 self._test_process(co) 435 self._test_process(co)
486 436
487 def testPrepare(self): 437 def testPrepare(self):
488 co = checkout.SvnCheckout( 438 co = checkout.SvnCheckout(
(...skipping 22 matching lines...) Expand all
511 co = self._get_co(read_only) 461 co = self._get_co(read_only)
512 462
513 # A copy of BaseTest._check_base() 463 # A copy of BaseTest._check_base()
514 self.assertEquals(root, co.project_path) 464 self.assertEquals(root, co.project_path)
515 self.assertEquals(None, co.prepare(None)) 465 self.assertEquals(None, co.prepare(None))
516 self.assertEquals('pouet', co.get_settings('bar')) 466 self.assertEquals('pouet', co.get_settings('bar'))
517 self.assertTree(self.get_trunk(False), root) 467 self.assertTree(self.get_trunk(False), root)
518 patches = self.get_patches() 468 patches = self.get_patches()
519 co.apply_patch(patches) 469 co.apply_patch(patches)
520 self.assertEquals( 470 self.assertEquals(
521 ['bin_file', 'extra', 'new_dir/subdir/new_file', 'svn_utils_test.txt'], 471 ['bin_file', 'chrome/file.cc', 'new_dir/subdir/new_file', 'extra'],
522 sorted(patches.filenames)) 472 patches.filenames)
523 473
524 # Verify that the patch is applied even for read only checkout. 474 # Verify that the patch is applied even for read only checkout.
525 self.assertTree(self.get_trunk(True), root) 475 self.assertTree(self.get_trunk(True), root)
526 if read_only: 476 if read_only:
527 revision = co.commit(u'msg', self.FAKE_REPOS.USERS[1][0]) 477 revision = co.commit(u'msg', self.FAKE_REPOS.USERS[1][0])
528 self.assertEquals('FAKE', revision) 478 self.assertEquals('FAKE', revision)
529 else: 479 else:
530 try: 480 try:
531 co.commit(u'msg', self.FAKE_REPOS.USERS[1][0]) 481 co.commit(u'msg', self.FAKE_REPOS.USERS[1][0])
532 self.fail() 482 self.fail()
533 except NotImplementedError: 483 except NotImplementedError:
534 pass 484 pass
535 self.assertTree(self.get_trunk(True), root) 485 self.assertTree(self.get_trunk(True), root)
536 # Verify that prepare() is a no-op. 486 # Verify that prepare() is a no-op.
537 self.assertEquals(None, co.prepare(None)) 487 self.assertEquals(None, co.prepare(None))
538 self.assertTree(self.get_trunk(True), root) 488 self.assertTree(self.get_trunk(True), root)
539 489
540 def testAllRW(self): 490 def testAllRW(self):
541 self._check(False) 491 self._check(False)
542 492
543 def testAllRO(self): 493 def testAllRO(self):
544 self._check(True) 494 self._check(True)
545 495
546 def testException(self): 496 def testException(self):
547 self._check_exception( 497 self._check_exception(
548 self._get_co(True), 498 self._get_co(True),
549 'patching file svn_utils_test.txt\n' 499 'patching file chrome/file.cc\n'
550 'Hunk #1 FAILED at 3.\n' 500 'Hunk #1 FAILED at 3.\n'
551 '1 out of 1 hunk FAILED -- saving rejects to file ' 501 '1 out of 1 hunk FAILED -- saving rejects to file '
552 'svn_utils_test.txt.rej\n') 502 'chrome/file.cc.rej\n')
553 503
554 def testProcess(self): 504 def testProcess(self):
555 co = lambda x: checkout.SvnCheckout( 505 co = lambda x: checkout.SvnCheckout(
556 self.root_dir, self.name, 506 self.root_dir, self.name,
557 None, None, 507 None, None,
558 self.svn_url, x) 508 self.svn_url, x)
559 self._test_process(co) 509 self._test_process(co)
560 510
561 def testPrepare(self): 511 def testPrepare(self):
562 co = checkout.SvnCheckout( 512 co = checkout.SvnCheckout(
563 self.root_dir, self.name, 513 self.root_dir, self.name,
564 None, None, 514 None, None,
565 self.svn_url) 515 self.svn_url)
566 self._test_prepare(co) 516 self._test_prepare(co)
567 517
568 518
569 if __name__ == '__main__': 519 if __name__ == '__main__':
570 if '-v' in sys.argv: 520 if '-v' in sys.argv:
571 DEBUGGING = True 521 DEBUGGING = True
572 logging.basicConfig( 522 logging.basicConfig(
573 level=logging.DEBUG, 523 level=logging.DEBUG,
574 format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s') 524 format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s')
575 else: 525 else:
576 logging.basicConfig( 526 logging.basicConfig(
577 level=logging.ERROR, 527 level=logging.ERROR,
578 format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s') 528 format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s')
579 unittest.main() 529 unittest.main()
OLDNEW
« no previous file with comments | « no previous file | tests/patch_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698