diff options
author | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2024-11-25 22:04:05 +0100 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2023-04-07 15:47:31 +0200 |
commit | 2a4d00025cec5475ad6e0069ad43bdacb20465a6 (patch) | |
tree | 89bceacd8d4f9423c4747668259a846c34427727 | |
parent | 137434227162c9c16b3e4acfcbfc4d5c7615bc28 (diff) | |
download | croniter-2a4d00025cec5475ad6e0069ad43bdacb20465a6.tar.gz |
Better error handling
This fixes #34
-rw-r--r-- | src/croniter/croniter.py | 6 | ||||
-rwxr-xr-x | src/croniter/tests/test_croniter.py | 4 |
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 |