summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2024-11-25 22:04:05 +0100
committerMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2023-04-07 15:47:31 +0200
commit2a4d00025cec5475ad6e0069ad43bdacb20465a6 (patch)
tree89bceacd8d4f9423c4747668259a846c34427727
parent137434227162c9c16b3e4acfcbfc4d5c7615bc28 (diff)
downloadcroniter-2a4d00025cec5475ad6e0069ad43bdacb20465a6.tar.gz
Better error handling
This fixes #34
-rw-r--r--src/croniter/croniter.py6
-rwxr-xr-xsrc/croniter/tests/test_croniter.py4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py
index af3130f..a461bbf 100644
--- a/src/croniter/croniter.py
+++ b/src/croniter/croniter.py
@@ -3,6 +3,7 @@
from __future__ import absolute_import, print_function, division
+import traceback as _traceback
import copy
import math
import re
@@ -785,13 +786,14 @@ class croniter(object):
"""Shallow non Croniter ValueError inside a nice CroniterBadCronError"""
try:
return cls._expand(expr_format, hash_id=hash_id)
- except ValueError as exc:
+ except (ValueError,) as exc:
error_type, error_instance, traceback = sys.exc_info()
if isinstance(exc, CroniterError):
raise
if int(sys.version[0]) >= 3:
+ trace = _traceback.format_exc()
globs, locs = _get_caller_globals_and_locals()
- exec("raise CroniterBadCronError from exc", globs, locs)
+ raise CroniterBadCronError(trace)
else:
raise CroniterBadCronError("{0}".format(exc))
diff --git a/src/croniter/tests/test_croniter.py b/src/croniter/tests/test_croniter.py
index a9d8ade..3eecfd2 100755
--- a/src/croniter/tests/test_croniter.py
+++ b/src/croniter/tests/test_croniter.py
@@ -1473,6 +1473,10 @@ class CroniterTest(base.TestCase):
self.assertEqual(n1, datetime_to_timestamp(base) + 60)
+ def test_issue_k34(self):
+ # invalid cron, but should throw appropriate exception
+ self.assertRaises(CroniterBadCronError, croniter, "4 0 L/2 2 0")
+
def test_issue_k33(self):
y = 2018
# At 11:30 PM, between day 1 and 7 of the month, Monday through Friday, only in January