Instead of raising an error when converting paths, return None and log an error.

The method is allowed to return None, so calling functions should handle that. Raising an error is very rude behavior and the output just said that the input was invalid with no real clue as to what is wrong.

Now None is returned without causing too much hassle, and a proper error is logged mentioning what exactly caused the error.

The test case was updated.

This is sort of related to https://bugs.launchpad.net/openlp/+bug/1786601 in that this would have been nice to actually know what went wrong and failback to None.

bzr-revno: 2829
This commit is contained in:
simhnna@gmail.com 2018-08-18 22:16:14 +02:00 committed by Tomas Groth
commit f833150003
2 changed files with 5 additions and 5 deletions

View File

@ -206,7 +206,8 @@ def str_to_path(string):
:rtype: openlp.core.common.path.Path | None
"""
if not isinstance(string, str):
raise TypeError('parameter \'string\' must be of type str')
log.error('parameter \'string\' must be of type str, got {} which is a {} instead'.format(string, type(string)))
return None
if string == '':
return None
return Path(string)

View File

@ -271,13 +271,12 @@ class TestPath(TestCase):
def test_str_to_path_type_error(self):
"""
Test that `str_to_path` raises a type error when called with an invalid type
Test that `str_to_path` returns None if called with invalid information
"""
# GIVEN: The `str_to_path` function
# WHEN: Calling `str_to_path` with an invalid Type
# THEN: A TypeError should have been raised
with self.assertRaises(TypeError):
str_to_path(Path())
# THEN: None is returned
assert str_to_path(Path()) is None
def test_str_to_path_empty_str(self):
"""