Bladeren bron

BackupErrors get caught and give warning RCs

also: use more union operators rather than .union()
Thomas Waldmann 1 jaar geleden
bovenliggende
commit
69072f0c17
2 gewijzigde bestanden met toevoegingen van 11 en 7 verwijderingen
  1. 4 4
      scripts/errorlist.py
  2. 7 3
      src/borg/helpers/errors.py

+ 4 - 4
scripts/errorlist.py

@@ -6,12 +6,12 @@ from textwrap import indent
 
 import borg.archiver  # noqa: F401 - need import to get Error subclasses.
 from borg.constants import *  # NOQA
-from borg.helpers import Error, BorgWarning
+from borg.helpers import Error, BackupError, BorgWarning
 
 
 def subclasses(cls):
     direct_subclasses = cls.__subclasses__()
-    return set(direct_subclasses).union([s for c in direct_subclasses for s in subclasses(c)])
+    return set(direct_subclasses) | set(s for c in direct_subclasses for s in subclasses(c))
 
 
 # 0, 1, 2 are used for success, generic warning, generic error
@@ -25,7 +25,7 @@ free_warning_rcs = set(range(EXIT_WARNING_BASE, EXIT_SIGNAL_BASE))  # 100 .. 127
 generic_error_rc_classes = set()
 generic_warning_rc_classes = set()
 
-error_classes = {Error}.union(subclasses(Error))
+error_classes = {Error} | subclasses(Error)
 
 for cls in sorted(error_classes, key=lambda cls: (cls.__module__, cls.__qualname__)):
     traceback = "yes" if cls.traceback else "no"
@@ -44,7 +44,7 @@ print()
 print('free error RCs:', sorted(free_error_rcs))
 print('generic errors:', sorted(generic_error_rc_classes))
 
-warning_classes = {BorgWarning}.union(subclasses(BorgWarning))
+warning_classes = {BorgWarning} | subclasses(BorgWarning) | {BackupError} | subclasses(BackupError)
 
 for cls in sorted(warning_classes, key=lambda cls: (cls.__module__, cls.__qualname__)):
     rc = cls.exit_mcode

+ 7 - 3
src/borg/helpers/errors.py

@@ -8,8 +8,8 @@ import borg.crypto.low_level
 modern_ec = os.environ.get("BORG_EXIT_CODES", "legacy") == "modern"
 
 
-class Error(Exception):
-    """Error: {}"""
+class ErrorBase(Exception):
+    """ErrorBase: {}"""
     # Error base class
 
     # if we raise such an Error and it is only caught by the uppermost
@@ -36,6 +36,10 @@ class Error(Exception):
         return self.exit_mcode if modern_ec else EXIT_ERROR
 
 
+class Error(ErrorBase):
+    """Error: {}"""
+
+
 class ErrorWithTraceback(Error):
     """Error: {}"""
     # like Error, but show a traceback also
@@ -112,7 +116,7 @@ class BackupWarning(BorgWarning):
         return exc.exit_mcode
 
 
-class BackupError(Error):
+class BackupError(ErrorBase):
     """{}: backup error"""
     # Exception raised for non-OSError-based exceptions while accessing backup files.
     exit_mcode = 102