From f51119d8c9e65dfd1f48f5669eafb072fb15af1c Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Sat, 5 Sep 2020 17:49:35 +0200 Subject: Do not call signal.strsignal() when not available (py<3.8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- gemato/cli.py | 8 ++++++-- tests/test_openpgp.py | 11 +++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/gemato/cli.py b/gemato/cli.py index 22b19f7..8b28b5e 100644 --- a/gemato/cli.py +++ b/gemato/cli.py @@ -589,8 +589,12 @@ class GnuPGWrapCommand(VerifyingOpenPGPMixin, GematoCommand): p = subprocess.Popen(self.argv) ret = p.wait() if ret < 0: - logging.error(f'Child process terminated due to signal: ' - f'{signal.strsignal(-ret)}') + if hasattr(signal, 'strsignal'): + sig = signal.strsignal(-ret) + else: + sig = -ret + logging.error( + f'Child process terminated due to signal: {sig}') return ret diff --git a/tests/test_openpgp.py b/tests/test_openpgp.py index 69f0aad..3125d3a 100644 --- a/tests/test_openpgp.py +++ b/tests/test_openpgp.py @@ -845,6 +845,13 @@ def test_get_wkd_url(email, expected): assert OpenPGPEnvironment.get_wkd_url(email) == expected +def signal_desc(sig): + if hasattr(signal, 'strsignal'): + return signal.strsignal(sig) + else: + return sig + + @pytest.mark.parametrize( 'command,expected,match', [('true', 0, None), @@ -853,10 +860,10 @@ def test_get_wkd_url(email, expected): ('gpg --verify {tmp_path}/Manifest.subkey', 2, None), ('sh -c "kill $$"', -signal.SIGTERM, f'Child process terminated due to signal: ' - f'{signal.strsignal(signal.SIGTERM)}'), + f'{signal_desc(signal.SIGTERM)}'), ('sh -c "kill -USR1 $$"', -signal.SIGUSR1, f'Child process terminated due to signal: ' - f'{signal.strsignal(signal.SIGUSR1)}'), + f'{signal_desc(signal.SIGUSR1)}'), ]) def test_cli_gpg_wrap(tmp_path, caplog, command, expected, match): with open(tmp_path / '.key.bin', 'wb') as f: -- cgit v1.2.3