[GRASS-SVN] r61220 - grass/trunk/lib/python/exceptions

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Jul 9 08:16:18 PDT 2014


Author: wenzeslaus
Date: 2014-07-09 08:16:18 -0700 (Wed, 09 Jul 2014)
New Revision: 61220

Modified:
   grass/trunk/lib/python/exceptions/__init__.py
Log:
pythonlib: add CalledModuleError exception used by gunittest and potentially to be used by PyGRASS or script.core

Modified: grass/trunk/lib/python/exceptions/__init__.py
===================================================================
--- grass/trunk/lib/python/exceptions/__init__.py	2014-07-09 14:28:38 UTC (rev 61219)
+++ grass/trunk/lib/python/exceptions/__init__.py	2014-07-09 15:16:18 UTC (rev 61220)
@@ -1,6 +1,8 @@
 # -*- coding: utf-8 -*-
 
+import subprocess
 
+
 class DBError(Exception):
     pass
 
@@ -35,3 +37,29 @@
 
 class Usage(Exception):
     pass
+
+
+# TODO: we inherit from subprocess to be aligned with check_call but it is needed?
+class CalledModuleError(subprocess.CalledProcessError):
+    """Raised when a called module ends with error (non-zero return code)
+
+    :param module: module name
+    :param code: some code snipped which contains parameters
+    :param rc: process returncode
+    :param error: errors provided by the module (stderr)
+    """
+    def __init__(self, module, code, returncode, errors=None):
+        super(CalledModuleError, self).__init__(returncode, module)
+        msg = _("Module run %s %s ended with error") % (module, code)
+        msg += _("\nProcess ended with non-zero return code %s") % returncode
+        if errors:
+            msg += _(". See the following errors:\n%s") % errors
+        else:
+            # here could be written "above" but it wouldn't work in some cases
+            # e.g., for testing framework
+            msg += _(". See errors in the (error) output.")
+        self.msg = msg
+        # TODO: handle other parameters
+
+    def __str__(self):
+        return self.msg



More information about the grass-commit mailing list