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

Side by Side Diff: tests/git_cl_test.py

Issue 1935653002: git_cl: Add the ability to set the description. (reland) (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Better test. Created 4 years, 7 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 | « git_cl.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 git_cl.py.""" 6 """Unit tests for git_cl.py."""
7 7
8 import os 8 import os
9 import StringIO 9 import StringIO
10 import stat 10 import stat
11 import sys 11 import sys
12 import unittest 12 import unittest
13 import urlparse 13 import urlparse
14 14
15 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 15 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
16 16
17 from testing_support.auto_stub import TestCase 17 from testing_support.auto_stub import TestCase
18 18
19 import git_cl 19 import git_cl
20 import git_common 20 import git_common
21 import git_footers 21 import git_footers
22 import subprocess2 22 import subprocess2
23 23
24 class ChangelistMock(object):
25 # A class variable so we can access it when we don't have access to the
26 # instance that's being set.
27 desc = ""
28 def __init__(self, **kwargs):
29 pass
30 def GetIssue(self):
31 return 1
32 def GetDescription(self):
33 return ChangelistMock.desc
34 def UpdateDescription(self, desc):
35 ChangelistMock.desc = desc
36
24 class PresubmitMock(object): 37 class PresubmitMock(object):
25 def __init__(self, *args, **kwargs): 38 def __init__(self, *args, **kwargs):
26 self.reviewers = [] 39 self.reviewers = []
27 @staticmethod 40 @staticmethod
28 def should_continue(): 41 def should_continue():
29 return True 42 return True
30 43
31 44
32 class RietveldMock(object): 45 class RietveldMock(object):
33 def __init__(self, *args, **kwargs): 46 def __init__(self, *args, **kwargs):
(...skipping 1344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 ] 1391 ]
1379 # TODO(tandrii): consider testing just set-commit and set-commit --clear, 1392 # TODO(tandrii): consider testing just set-commit and set-commit --clear,
1380 # but without copy-pasting tons of expectations, as modifying them later is 1393 # but without copy-pasting tons of expectations, as modifying them later is
1381 # super tedious. 1394 # super tedious.
1382 self.assertEqual(0, git_cl.main(['set-commit', '-d'])) 1395 self.assertEqual(0, git_cl.main(['set-commit', '-d']))
1383 1396
1384 def test_description_display(self): 1397 def test_description_display(self):
1385 out = StringIO.StringIO() 1398 out = StringIO.StringIO()
1386 self.mock(git_cl.sys, 'stdout', out) 1399 self.mock(git_cl.sys, 'stdout', out)
1387 1400
1388 class MockChangelist(): 1401 self.mock(git_cl, 'Changelist', ChangelistMock)
1389 def __init__(self, **kwargs): 1402 ChangelistMock.desc = 'foo\n'
1390 pass
1391 def GetIssue(self):
1392 return 1
1393 def GetDescription(self):
1394 return 'foo'
1395
1396 self.mock(git_cl, 'Changelist', MockChangelist)
1397 1403
1398 self.assertEqual(0, git_cl.main(['description', '-d'])) 1404 self.assertEqual(0, git_cl.main(['description', '-d']))
1399 self.assertEqual('foo\n', out.getvalue()) 1405 self.assertEqual('foo\n', out.getvalue())
1400 1406
1401 def test_description_rietveld(self): 1407 def test_description_rietveld(self):
1402 out = StringIO.StringIO() 1408 out = StringIO.StringIO()
1403 self.mock(git_cl.sys, 'stdout', out) 1409 self.mock(git_cl.sys, 'stdout', out)
1404 self.mock(git_cl.Changelist, 'GetDescription', 1410 self.mock(git_cl.Changelist, 'GetDescription',
1405 lambda *args: 'foobar') 1411 lambda *args: 'foobar')
1406 1412
1407 self.calls = [ 1413 self.calls = [
1408 ((['git', 'config', 'rietveld.autoupdate'],), ''), 1414 ((['git', 'config', 'rietveld.autoupdate'],), ''),
1409 ((['git', 'config', 'rietveld.server'],), ''), 1415 ((['git', 'config', 'rietveld.server'],), ''),
1410 ((['git', 'config', 'rietveld.server'],), ''), 1416 ((['git', 'config', 'rietveld.server'],), ''),
1411 ] 1417 ]
1412 self.assertEqual(0, git_cl.main([ 1418 self.assertEqual(0, git_cl.main([
1413 'description', 'https://code.review.org/123123', '-d', '--rietveld'])) 1419 'description', 'https://code.review.org/123123', '-d', '--rietveld']))
1414 self.assertEqual('foobar\n', out.getvalue()) 1420 self.assertEqual('foobar\n', out.getvalue())
1415 1421
1416 def test_description_gerrit(self): 1422 def test_description_gerrit(self):
1417 out = StringIO.StringIO() 1423 out = StringIO.StringIO()
1418 self.mock(git_cl.sys, 'stdout', out) 1424 self.mock(git_cl.sys, 'stdout', out)
1419 self.mock(git_cl.Changelist, 'GetDescription', 1425 self.mock(git_cl.Changelist, 'GetDescription',
1420 lambda *args: 'foobar') 1426 lambda *args: 'foobar')
1421 1427
1422 self.assertEqual(0, git_cl.main([ 1428 self.assertEqual(0, git_cl.main([
1423 'description', 'https://code.review.org/123123', '-d', '--gerrit'])) 1429 'description', 'https://code.review.org/123123', '-d', '--gerrit']))
1424 self.assertEqual('foobar\n', out.getvalue()) 1430 self.assertEqual('foobar\n', out.getvalue())
1425 1431
1432 def test_description_set_raw(self):
1433 out = StringIO.StringIO()
1434 self.mock(git_cl.sys, 'stdout', out)
1435
1436 self.mock(git_cl, 'Changelist', ChangelistMock)
1437 self.mock(git_cl.sys, 'stdin', StringIO.StringIO('hihi'))
1438
1439 self.assertEqual(0, git_cl.main(['description', '-n', 'hihi']))
1440 self.assertEqual('hihi', ChangelistMock.desc)
1441
1442 def test_description_set_stdin(self):
1443 out = StringIO.StringIO()
1444 self.mock(git_cl.sys, 'stdout', out)
1445
1446 self.mock(git_cl, 'Changelist', ChangelistMock)
1447 self.mock(git_cl.sys, 'stdin', StringIO.StringIO('hi \r\n\t there\n\nman'))
1448
1449 self.assertEqual(0, git_cl.main(['description', '-n', '-']))
1450 self.assertEqual('hi\n\t there\n\nman', ChangelistMock.desc)
1451
1426 1452
1427 if __name__ == '__main__': 1453 if __name__ == '__main__':
1428 git_cl.logging.basicConfig( 1454 git_cl.logging.basicConfig(
1429 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) 1455 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR)
1430 unittest.main() 1456 unittest.main()
OLDNEW
« no previous file with comments | « git_cl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698