From eef97e27cd641a742daad93e99964c2a61d0ec27 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 3 Nov 2020 07:02:36 -0500 Subject: [PATCH] import python-dasbus-1.2-2.el8 --- .gitignore | 1 + .python-dasbus.metadata | 1 + ...ndling-DBus-errors-on-the-server-sid.patch | 64 ++++++++ ...2-Handle-all-errors-of-the-DBus-call.patch | 152 ++++++++++++++++++ SPECS/python-dasbus.spec | 111 +++++++++++++ 5 files changed, 329 insertions(+) create mode 100644 .gitignore create mode 100644 .python-dasbus.metadata create mode 100644 SOURCES/0001-Fix-tests-for-handling-DBus-errors-on-the-server-sid.patch create mode 100644 SOURCES/0002-Handle-all-errors-of-the-DBus-call.patch create mode 100644 SPECS/python-dasbus.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..18c5c03 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/dasbus-1.2.tar.gz diff --git a/.python-dasbus.metadata b/.python-dasbus.metadata new file mode 100644 index 0000000..1e4decc --- /dev/null +++ b/.python-dasbus.metadata @@ -0,0 +1 @@ +2e4a97b5620f67a2575b54dd3d434b657a14c099 SOURCES/dasbus-1.2.tar.gz diff --git a/SOURCES/0001-Fix-tests-for-handling-DBus-errors-on-the-server-sid.patch b/SOURCES/0001-Fix-tests-for-handling-DBus-errors-on-the-server-sid.patch new file mode 100644 index 0000000..029bdfa --- /dev/null +++ b/SOURCES/0001-Fix-tests-for-handling-DBus-errors-on-the-server-sid.patch @@ -0,0 +1,64 @@ +From 14c059135e305f85a579acd449f3a1c893558e55 Mon Sep 17 00:00:00 2001 +From: Vendula Poncova +Date: Thu, 16 Jul 2020 21:28:18 +0200 +Subject: [PATCH 1/2] Fix tests for handling DBus errors on the server side + +Really check the name and the message of every returned DBus error. +--- + tests/test_server.py | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/tests/test_server.py b/tests/test_server.py +index d96144e..ce91b97 100644 +--- a/tests/test_server.py ++++ b/tests/test_server.py +@@ -94,7 +94,10 @@ class DBusServerTestCase(unittest.TestCase): + parameters + ) + +- invocation.return_dbus_error(error_name, error_message) ++ invocation.return_dbus_error.assert_called_once_with( ++ error_name, ++ error_message ++ ) + invocation.return_value.assert_not_called() + + def test_register(self): +@@ -171,8 +174,8 @@ class DBusServerTestCase(unittest.TestCase): + "Interface", + "MethodInvalid", + error_name="not.known.Error.DBusSpecificationError", +- error_message="Unknown member MethodInvalid of " +- "the interface Interface." ++ error_message="DBus specification has no member " ++ "'Interface.MethodInvalid'." + ) + + self.error_mapper.add_rule(ErrorRule( +@@ -238,8 +241,9 @@ class DBusServerTestCase(unittest.TestCase): + "Property2", + get_variant("s", "World") + )), +- error_name="not.known.AttributeError", +- error_message="Property2 of Interface is not writable." ++ error_name="not.known.Error.AttributeError", ++ error_message="The property Interface.Property2 " ++ "is not writable." + ) + self.assertEqual(self.object.Property2, "Hello") + +@@ -250,8 +254,9 @@ class DBusServerTestCase(unittest.TestCase): + "Interface", + "Property3" + )), +- error_name="not.known.AttributeError", +- error_message="Property3 of Interface is not readable." ++ error_name="not.known.Error.AttributeError", ++ error_message="The property Interface.Property3 " ++ "is not readable." + ) + self._call_method( + "org.freedesktop.DBus.Properties", "Set", +-- +2.26.2 + diff --git a/SOURCES/0002-Handle-all-errors-of-the-DBus-call.patch b/SOURCES/0002-Handle-all-errors-of-the-DBus-call.patch new file mode 100644 index 0000000..39e2c30 --- /dev/null +++ b/SOURCES/0002-Handle-all-errors-of-the-DBus-call.patch @@ -0,0 +1,152 @@ +From e3c082e3619ab2d9095b58e55c90157f6376fd1e Mon Sep 17 00:00:00 2001 +From: Vendula Poncova +Date: Thu, 16 Jul 2020 20:24:25 +0200 +Subject: [PATCH 2/2] Handle all errors of the DBus call + +Don't handle only errors caused by the method invocation, but handle +also errors caused by processing the result of the method. +--- + dasbus/client/handler.py | 3 +-- + dasbus/server/handler.py | 11 +++++------ + tests/test_client.py | 16 ++++++++++++++++ + tests/test_server.py | 36 ++++++++++++++++++++++++++++++------ + 4 files changed, 52 insertions(+), 14 deletions(-) + +diff --git a/dasbus/client/handler.py b/dasbus/client/handler.py +index ed1a690..839f5a6 100644 +--- a/dasbus/client/handler.py ++++ b/dasbus/client/handler.py +@@ -472,10 +472,9 @@ class ClientObjectHandler(AbstractClientObjectHandler): + """ + try: + result = call(*args, **kwargs) ++ return self._handle_method_result(result) + except Exception as error: # pylint: disable=broad-except + return self._handle_method_error(error) +- else: +- return self._handle_method_result(result) + + def _handle_method_error(self, error): + """Handle an error of a DBus call. +diff --git a/dasbus/server/handler.py b/dasbus/server/handler.py +index 3871948..8183f26 100644 +--- a/dasbus/server/handler.py ++++ b/dasbus/server/handler.py +@@ -420,6 +420,11 @@ class ServerObjectHandler(AbstractServerObjectHandler): + method_name, + *unwrap_variant(parameters) + ) ++ self._handle_method_result( ++ invocation, ++ member, ++ result ++ ) + except Exception as error: # pylint: disable=broad-except + self._handle_method_error( + invocation, +@@ -427,12 +432,6 @@ class ServerObjectHandler(AbstractServerObjectHandler): + method_name, + error + ) +- else: +- self._handle_method_result( +- invocation, +- member, +- result +- ) + + def _handle_method_error(self, invocation, interface_name, method_name, + error): +diff --git a/tests/test_client.py b/tests/test_client.py +index 7cb96c3..cd44552 100644 +--- a/tests/test_client.py ++++ b/tests/test_client.py +@@ -256,6 +256,22 @@ class DBusClientTestCase(unittest.TestCase): + str(cm.exception) + ) + ++ def test_invalid_method_result(self): ++ """Test a method proxy with an invalid result.""" ++ self._create_proxy(""" ++ ++ ++ ++ ++ ++ ++ ++ """) ++ ++ self._set_reply(get_variant("i", -1)) ++ with self.assertRaises(TypeError): ++ self.proxy.Method() ++ + def _set_reply(self, reply_value): + """Set the reply of the DBus call.""" + self.connection.call_sync.reset_mock() +diff --git a/tests/test_server.py b/tests/test_server.py +index ce91b97..4adcf89 100644 +--- a/tests/test_server.py ++++ b/tests/test_server.py +@@ -82,8 +82,8 @@ class DBusServerTestCase(unittest.TestCase): + + def _call_method_with_error(self, interface, method, + parameters=NO_PARAMETERS, +- error_name="", +- error_message=""): ++ error_name=None, ++ error_message=None): + invocation = Mock() + + with self.assertLogs(level='WARN'): +@@ -94,12 +94,17 @@ class DBusServerTestCase(unittest.TestCase): + parameters + ) + +- invocation.return_dbus_error.assert_called_once_with( +- error_name, +- error_message +- ) ++ invocation.return_dbus_error.assert_called_once() + invocation.return_value.assert_not_called() + ++ (name, msg), kwargs = invocation.return_dbus_error.call_args ++ ++ self.assertEqual(kwargs, {}) ++ self.assertEqual(name, error_name, "Unexpected error name.") ++ ++ if error_message is not None: ++ self.assertEqual(msg, error_message, "Unexpected error message.") ++ + def test_register(self): + """Test the object registration.""" + with self.assertRaises(DBusSpecificationError) as cm: +@@ -193,6 +198,25 @@ class DBusServerTestCase(unittest.TestCase): + error_message="The method has failed." + ) + ++ def test_invalid_method_result(self): ++ """Test a method with an invalid result.""" ++ self._publish_object(""" ++ ++ ++ ++ ++ ++ ++ ++ """) ++ ++ self.object.Method.return_value = -1 ++ self._call_method_with_error( ++ "Interface", ++ "Method", ++ error_name="not.known.Error.OverflowError" ++ ) ++ + def test_property(self): + """Test the property publishing.""" + self._publish_object(""" +-- +2.26.2 + diff --git a/SPECS/python-dasbus.spec b/SPECS/python-dasbus.spec new file mode 100644 index 0000000..49469fb --- /dev/null +++ b/SPECS/python-dasbus.spec @@ -0,0 +1,111 @@ +%global srcname dasbus + +Name: python-%{srcname} +Version: 1.2 +Release: 2%{?dist} +Summary: DBus library in Python 3 + +License: LGPLv2+ +URL: https://pypi.python.org/pypi/dasbus +Source0: %{pypi_source} + +BuildArch: noarch + +# Handle all errors of the DBus call +# https://bugzilla.redhat.com/show_bug.cgi?id=1858757 +Patch0: 0001-Fix-tests-for-handling-DBus-errors-on-the-server-sid.patch +Patch1: 0002-Handle-all-errors-of-the-DBus-call.patch + +%global _description %{expand: +Dasbus is a DBus library written in Python 3, based on +GLib and inspired by pydbus. It is designed to be easy +to use and extend.} + +%description %{_description} + +%package -n python3-%{srcname} +Summary: %{summary} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +Requires: python3-gobject-base +%{?python_provide:%python_provide python3-%{srcname}} + +%description -n python3-%{srcname} %{_description} + +%prep +%autosetup -n %{srcname}-%{version} -p1 + +%build +%py3_build + +%install +%py3_install + +%files -n python3-%{srcname} +%license LICENSE +%doc README.md +%{python3_sitelib}/%{srcname}-*.egg-info/ +%{python3_sitelib}/%{srcname}/ + +%changelog +* Mon Jul 27 2020 Vendula Poncova - 1.2-2 +- Handle all errors of the DBus call (#1858757) (vponcova) +* Mon May 18 2020 Vendula Poncova - 1.2-1 +- Replace ABC with ABCMeta (vponcova) +- Fix typing tests (vponcova) +- Run tests on the latest CentOS (vponcova) +- Install sphinx from PyPI (vponcova) +* Thu May 14 2020 Vendula Poncova - 1.1-1 +- Include tests and examples in the source distribution (vponcova) +- Fix the pylint warning signature-differs (vponcova) +* Tue May 05 2020 Vendula Poncova - 1.0-1 +- Fix the documentation (vponcova) +- Fix minor typos (yurchor) +- Enable Codecov (vponcova) +- Test the documentation build (vponcova) +- Extend the documentation (vponcova) +- Add configuration files for Read the Docs and Conda (vponcova) +- Fix all warnings from the generated documentation (vponcova) +* Wed Apr 08 2020 Vendula Poncova - 0.4-1 +- Replace the error register with the error mapper (vponcova) +- Propagate additional arguments for the client handler factory (vponcova) +- Propagate additional arguments in the class AddressedMessageBus (vponcova) +- Generate the documentation (vponcova) +* Thu Apr 02 2020 Vendula Poncova - 0.3-1 +- Remove generate_dictionary_from_data (vponcova) +- Improve some of the error messages (vponcova) +- Check the list of DBus structures to convert (vponcova) +- Add the Inspiration section to README (vponcova) +- Enable syntax highlighting in README (vponcova) +- Use the class EventLoop in README (vponcova) +- Use the --no-merges option (vponcova) +- Clean up the Makefile (vponcova) +- Add examples (vponcova) +- Add the representation of the event loop (vponcova) +- Enable copr builds and add packit config (dhodovsk) +- Extend README (vponcova) +* Mon Jan 13 2020 Vendula Poncova - 0.2-1 +- Unwrap DBus values (vponcova) +- Unwrap a variant data type (vponcova) +- Add a default DBus error (vponcova) +- Use the minimal image in Travis CI (vponcova) +- Remove GLibErrorHandler (vponcova) +- Remove map_error and map_by_default (vponcova) +- Extend arguments of dbus_error (vponcova) +- Extend arguments of dbus_interface (vponcova) +- The list of callbacks in signals can be changed during emitting (vponcova) +- Don't import from mock (vponcova) +- Enable checks in Travis CI (vponcova) +- Fix too long lines (vponcova) +- Don't use wildcard imports (vponcova) +- Add the check target to the Makefile (vponcova) +- Enable Travis CI (vponcova) +- Catch logged warnings in the unit tests (vponcova) +- Add the coverage target to the Makefile (vponcova) +- Rename tests (vponcova) +- Create Makefile (vponcova) +- Create a .spec file (vponcova) +- Add requirements to the README file (vponcova) + +* Thu Oct 31 2019 Vendula Poncova - 0.1-1 +- Initial package