Commit 3c972b90 authored by iannucci's avatar iannucci Committed by Commit bot

Add --issue flag to git cl status.

R=phajdan.jr@chromium.org, vadimsh@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2250323003
parent ea9514aa
...@@ -3284,18 +3284,29 @@ def CMDstatus(parser, args): ...@@ -3284,18 +3284,29 @@ def CMDstatus(parser, args):
help='print only specific field (desc|id|patch|status|url)') help='print only specific field (desc|id|patch|status|url)')
parser.add_option('-f', '--fast', action='store_true', parser.add_option('-f', '--fast', action='store_true',
help='Do not retrieve review status') help='Do not retrieve review status')
parser.add_option('-i', '--issue', type=int,
help='Operate on this issue number instead of the current'
' branch\'s implicit issue. Only valid with --field.')
parser.add_option( parser.add_option(
'-j', '--maxjobs', action='store', type=int, '-j', '--maxjobs', action='store', type=int,
help='The maximum number of jobs to use when retrieving review status') help='The maximum number of jobs to use when retrieving review status')
auth.add_auth_options(parser) auth.add_auth_options(parser)
_add_codereview_select_options(parser)
options, args = parser.parse_args(args) options, args = parser.parse_args(args)
_process_codereview_select_options(parser, options)
if args: if args:
parser.error('Unsupported args: %s' % args) parser.error('Unsupported args: %s' % args)
auth_config = auth.extract_auth_config_from_options(options) auth_config = auth.extract_auth_config_from_options(options)
if options.issue is not None:
if not options.field or not options.forced_codereview:
parser.error('--issue may only be specified in conjunction with --field'
' and either --rietveld or --gerrit')
if options.field: if options.field:
cl = Changelist(auth_config=auth_config) cl = Changelist(auth_config=auth_config, issue=options.issue,
codereview=options.forced_codereview)
if options.field.startswith('desc'): if options.field.startswith('desc'):
print(cl.GetDescription()) print(cl.GetDescription())
elif options.field == 'id': elif options.field == 'id':
......
...@@ -1532,6 +1532,42 @@ class TestGitCl(TestCase): ...@@ -1532,6 +1532,42 @@ class TestGitCl(TestCase):
'description', 'https://code.review.org/123123', '-d', '--rietveld'])) 'description', 'https://code.review.org/123123', '-d', '--rietveld']))
self.assertEqual('foobar\n', out.getvalue()) self.assertEqual('foobar\n', out.getvalue())
def test_StatusFieldOverrideIssueMissingArgs(self):
out = StringIO.StringIO()
self.mock(git_cl.sys, 'stderr', out)
try:
self.assertEqual(git_cl.main(['status', '--issue', '1']), 0)
except SystemExit as ex:
self.assertEqual(ex.code, 2)
self.assertRegexpMatches(out.getvalue(), r'--issue may only be specified')
out = StringIO.StringIO()
self.mock(git_cl.sys, 'stderr', out)
try:
self.assertEqual(git_cl.main(['status', '--issue', '1', '--rietveld']), 0)
except SystemExit as ex:
self.assertEqual(ex.code, 2)
self.assertRegexpMatches(out.getvalue(), r'--issue may only be specified')
def test_StatusFieldOverrideIssue(self):
out = StringIO.StringIO()
self.mock(git_cl.sys, 'stdout', out)
def assertIssue(cl_self, *_args):
self.assertEquals(cl_self.issue, 1)
return 'foobar'
self.mock(git_cl.Changelist, 'GetDescription', assertIssue)
self.calls = [
((['git', 'config', 'rietveld.autoupdate'],), ''),
((['git', 'config', 'rietveld.server'],), ''),
((['git', 'config', 'rietveld.server'],), ''),
]
git_cl.main(['status', '--issue', '1', '--rietveld', '--field', 'desc'])
self.assertEqual(out.getvalue(), 'foobar\n')
def test_description_gerrit(self): def test_description_gerrit(self):
out = StringIO.StringIO() out = StringIO.StringIO()
self.mock(git_cl.sys, 'stdout', out) self.mock(git_cl.sys, 'stdout', out)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment