From 851ba6aedbb96c5a6d58b29567dc7fb633a2bf13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Mon, 27 Feb 2017 20:18:29 +0100 Subject: [PATCH] Fix handling '%d' in exception message QubesOS/qubes-issues#853 --- qubesmgmt/exc.py | 4 +++- qubesmgmt/tests/errors.py | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/qubesmgmt/exc.py b/qubesmgmt/exc.py index 347c5f0..053bfef 100644 --- a/qubesmgmt/exc.py +++ b/qubesmgmt/exc.py @@ -25,4 +25,6 @@ class QubesException(Exception): '''Base exception for all Qubes-related errors.''' def __init__(self, message_format, *args, **kwargs): # TODO: handle translations - super(QubesException, self).__init__(message_format % args, **kwargs) + super(QubesException, self).__init__( + message_format % tuple(int(d) if d.isdigit() else d for d in args), + **kwargs) diff --git a/qubesmgmt/tests/errors.py b/qubesmgmt/tests/errors.py index b9ae736..b72da65 100644 --- a/qubesmgmt/tests/errors.py +++ b/qubesmgmt/tests/errors.py @@ -39,7 +39,6 @@ class TC_00_Errors(qubesmgmt.tests.QubesTestCase): self.assertEqual(str(context.exception), 'An error occurred: string, other') - @unittest.expectedFailure def test_002_exception_with_numbers(self): self.app.expected_calls[('dom0', 'mgmt.vm.List', None, None)] = \ b'2\x00QubesException\x00\x00' \ @@ -49,7 +48,7 @@ class TC_00_Errors(qubesmgmt.tests.QubesTestCase): vms = list(self.app.domains) except TypeError as e: self.fail('TypeError: {!s}'.format(e)) - self.assertEqual(str(context.exception), 'An error occurred: 1 2') + self.assertEqual(str(context.exception), 'An error occurred: 1, 2') def test_010_empty(self): self.app.expected_calls[('dom0', 'mgmt.vm.List', None, None)] = b''\