git cl: refactor common user interactions.
R=machenbach@chromium.org
BUG=
Change-Id: Id3e3fe6223a875d997ac5569137db270818a08f4
Reviewed-on: https://chromium-review.googlesource.com/453439
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 7401195..dbcb26a 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -464,7 +464,8 @@
self._mocked_call(['get_or_create_merge_base']+list(a))))
self.mock(git_cl, 'BranchExists', lambda _: True)
self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '')
- self.mock(git_cl, 'ask_for_data', self._mocked_call)
+ self.mock(git_cl, 'ask_for_data', lambda *a, **k: self._mocked_call(
+ *(['ask_for_data'] + list(a)), **k))
self.mock(git_cl, 'write_json', lambda path, contents:
self._mocked_call('write_json', path, contents))
self.mock(git_cl.presubmit_support, 'DoPresubmitChecks', PresubmitMock)
@@ -550,6 +551,20 @@
raise result
return result
+ def test_ask_for_explicit_yes_true(self):
+ self.calls = [
+ (('ask_for_data', 'prompt [Yes/No]: '), 'blah'),
+ (('ask_for_data', 'Please, type yes or no: '), 'ye'),
+ ]
+ self.assertTrue(git_cl.ask_for_explicit_yes('prompt'))
+
+ def test_ask_for_explicit_yes_true(self):
+ self.calls = [
+ (('ask_for_data', 'prompt [Yes/No]: '), 'yesish'),
+ (('ask_for_data', 'Please, type yes or no: '), 'nO'),
+ ]
+ self.assertFalse(git_cl.ask_for_explicit_yes('prompt'))
+
def test_LoadCodereviewSettingsFromFile_gerrit(self):
codereview_file = StringIO.StringIO('GERRIT_HOST: true')
self.calls = [
@@ -1247,7 +1262,7 @@
if not title:
calls += [
((['git', 'show', '-s', '--format=%s', 'HEAD'],), ''),
- (('Title for patchset []: ',), 'User input'),
+ (('ask_for_data', 'Title for patchset []: '), 'User input'),
]
title = 'User_input'
if not git_footers.get_footer_change_id(description) and not squash:
@@ -1562,8 +1577,10 @@
self.mock(git_cl, 'CMDupload', mock_CMDupload)
self.calls = [
- (('[Press enter to continue or ctrl-C to quit]',), ''),
- ]
+ (('ask_for_data', 'This command will checkout all dependent branches '
+ 'and run "git cl upload". Press Enter to continue, '
+ 'or Ctrl+C to abort'), ''),
+ ]
class MockChangelist():
def __init__(self):
@@ -1950,8 +1967,6 @@
CookiesAuthenticatorMockFactory(hosts_with_creds=auth))
self.mock(git_cl, 'DieWithError',
lambda msg, change=None: self._mocked_call(['DieWithError', msg]))
- self.mock(git_cl, 'ask_for_data',
- lambda msg: self._mocked_call(['ask_for_data', msg]))
self.calls = self._gerrit_ensure_auth_calls(skip_auth_check=skip_auth_check)
cl = git_cl.Changelist(codereview='gerrit')
cl.branch = 'master'
@@ -1979,8 +1994,8 @@
'chromium-review.googlesource.com': 'other',
})
self.calls.append(
- ((['ask_for_data', 'If you know what you are doing, '
- 'press Enter to continue, Ctrl+C to abort.'],), ''))
+ (('ask_for_data', 'If you know what you are doing '
+ 'press Enter to continue, or Ctrl+C to abort'), ''))
self.assertIsNone(cl.EnsureAuthenticated(force=False))
def test_gerrit_ensure_authenticated_ok(self):
@@ -2678,7 +2693,7 @@
((['exists', '/abs/git_repo_root/.git/hooks/commit-msg'],), True),
((['FileRead', '/abs/git_repo_root/.git/hooks/commit-msg'],),
'...\n# From Gerrit Code Review\n...\nadd_ChangeId()\n'),
- (('Do you want to remove it now? [Yes/No]',), 'Yes'),
+ (('ask_for_data', 'Do you want to remove it now? [Yes/No]: '), 'Yes'),
((['rm_file_or_tree', '/abs/git_repo_root/.git/hooks/commit-msg'],),
''),
]