diff --git a/fdroidserver/exception.py b/fdroidserver/exception.py index 4a3570d2..51481c56 100644 --- a/fdroidserver/exception.py +++ b/fdroidserver/exception.py @@ -17,7 +17,10 @@ class FDroidException(Exception): return ret def __str__(self): - ret = self.value + if self.value is None: + ret = __name__ + else: + ret = str(self.value) if self.detail: ret += "\n==== detail begin ====\n%s\n==== detail end ====" % ''.join(self.detail).strip() return ret diff --git a/tests/exception.TestCase b/tests/exception.TestCase new file mode 100755 index 00000000..01d0a5af --- /dev/null +++ b/tests/exception.TestCase @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +# http://www.drdobbs.com/testing/unit-testing-with-python/240165163 + +import inspect +import optparse +import os +import sys +import unittest + +localmodule = os.path.realpath( + os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) +print('localmodule: ' + localmodule) +if localmodule not in sys.path: + sys.path.insert(0, localmodule) + +import fdroidserver.common +import fdroidserver.exception + + +class ExceptionTest(unittest.TestCase): + '''fdroidserver/exception.py''' + + def test_FDroidException(self): + try: + raise fdroidserver.exception.FDroidException() + except fdroidserver.exception.FDroidException as e: + str(e) + + try: + raise fdroidserver.exception.FDroidException(9) + except fdroidserver.exception.FDroidException as e: + str(e) + + try: + raise fdroidserver.exception.FDroidException(-123.12234) + except fdroidserver.exception.FDroidException as e: + str(e) + + try: + raise fdroidserver.exception.FDroidException("this is a string") + except fdroidserver.exception.FDroidException as e: + str(e) + + try: + raise fdroidserver.exception.FDroidException(['one', 'two', 'three']) + except fdroidserver.exception.FDroidException as e: + str(e) + + try: + raise fdroidserver.exception.FDroidException(('one', 'two', 'three')) + except fdroidserver.exception.FDroidException as e: + str(e) + + +if __name__ == "__main__": + parser = optparse.OptionParser() + parser.add_option("-v", "--verbose", action="store_true", default=False, + help="Spew out even more information than normal") + (fdroidserver.exception.options, args) = parser.parse_args(['--verbose']) + fdroidserver.common.options = fdroidserver.exception.options + + newSuite = unittest.TestSuite() + newSuite.addTest(unittest.makeSuite(ExceptionTest)) + unittest.main()