From f6f5652b86829cbab9cc3d2df33a5d12e4dedc37 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sun, 11 Jun 2023 13:49:27 +0200 Subject: [PATCH] Ehance git.push() by adding `get_output` to method --- manageprojects/__init__.py | 2 +- manageprojects/git.py | 19 ++++++++++++++----- manageprojects/tests/test_git.py | 5 +++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/manageprojects/__init__.py b/manageprojects/__init__.py index e2422dc..53e84cc 100644 --- a/manageprojects/__init__.py +++ b/manageprojects/__init__.py @@ -3,5 +3,5 @@ Manage Python / Django projects """ -__version__ = '0.12.0' +__version__ = '0.12.1' __author__ = 'Jens Diemer ' diff --git a/manageprojects/git.py b/manageprojects/git.py index 3f2de09..eef5e7a 100644 --- a/manageprojects/git.py +++ b/manageprojects/git.py @@ -302,17 +302,23 @@ def get_file_dt(self, file_name, verbose=True, with_tz=True) -> datetime.datetim def tag(self, git_tag: str, message: str, verbose=True, exit_on_error=True): self.git_verbose_check_call('tag', '-a', git_tag, '-m', message, verbose=verbose, exit_on_error=exit_on_error) - def push(self, name: str | None = None, branch_name: str | None = None, tags: bool = False, verbose=True): + def push( + self, + name: str | None = None, + branch_name: str | None = None, + tags: bool = False, + verbose=True, + get_output=False, + ): """ e.g.: git.push() git.push(name='origin') git.push(name='origin', branch_name='my_branch') """ + args = ['push'] if tags: - args = ['--tags'] - else: - args = [] + args.append('--tags') if name: args.append(name) @@ -321,7 +327,10 @@ def push(self, name: str | None = None, branch_name: str | None = None, tags: bo assert name args.append(branch_name) - self.git_verbose_check_call('push', *args, verbose=verbose) + if get_output: + return self.git_verbose_check_output(*args, verbose=verbose) + else: + self.git_verbose_check_call(*args, verbose=verbose) def tag_list(self, verbose=True, exit_on_error=True) -> list[str]: output = self.git_verbose_check_output('tag', verbose=verbose, exit_on_error=exit_on_error) diff --git a/manageprojects/tests/test_git.py b/manageprojects/tests/test_git.py index e4edc11..7b83aed 100644 --- a/manageprojects/tests/test_git.py +++ b/manageprojects/tests/test_git.py @@ -76,6 +76,11 @@ def test_own_git_repo(self): git.push(name='origin', branch_name='my_branch') self.assertEqual(call_mock.get_popenargs(), [[git_bin, 'push', 'origin', 'my_branch']]) + with SubprocessCallMock(return_callback=SimpleRunReturnCallback(stdout='mocked output')) as call_mock: + output = git.push(name='origin', branch_name='my_branch', get_output=True) + self.assertEqual(call_mock.get_popenargs(), [[git_bin, 'push', 'origin', 'my_branch']]) + self.assertEqual(output, 'mocked output') + with SubprocessCallMock() as call_mock: git.checkout_branch('foo-bar') self.assertEqual(call_mock.get_popenargs(), [[git_bin, 'checkout', 'foo-bar']])