summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsg3-141-592 <5122866+sg3-141-592@users.noreply.github.com>2023-04-12 14:08:07 +0000
committerMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2023-04-12 18:02:23 +0200
commit027366fb148a180dcce0baa0d7d634fc73dbfe20 (patch)
tree66fd5f65d60a955fa4b40edcddb873cea88e8014
parentfd3fb86aa83b8d74f0108a061482896fcdd14edb (diff)
downloadcroniter-027366fb148a180dcce0baa0d7d634fc73dbfe20.tar.gz
Adding check for range begin end
-rw-r--r--src/croniter/croniter.py4
-rw-r--r--src/croniter/tests/test_croniter_hash.py10
2 files changed, 14 insertions, 0 deletions
diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py
index dbd005f..ba07b5c 100644
--- a/src/croniter/croniter.py
+++ b/src/croniter/croniter.py
@@ -909,6 +909,10 @@ class HashExpander:
if m['hash_type'] == 'h' and hash_id is None:
raise CroniterBadCronError('Hashed definitions must include hash_id')
+
+ if m['range_begin'] and m['range_end']:
+ if int(m['range_begin']) >= int(m['range_end']):
+ raise CroniterBadCronError('Range end must be greater than range begin')
if m['range_begin'] and m['range_end'] and m['divisor']:
# Example: H(30-59)/10 -> 34-59/10 (i.e. 34,44,54)
diff --git a/src/croniter/tests/test_croniter_hash.py b/src/croniter/tests/test_croniter_hash.py
index a2053a3..8119d95 100644
--- a/src/croniter/tests/test_croniter_hash.py
+++ b/src/croniter/tests/test_croniter_hash.py
@@ -98,6 +98,16 @@ class CroniterHashTest(CroniterHashBase):
self._test_iter(
'H(30-59)/10 H * * *', datetime(2020, 1, 1, 11, 31), timedelta(minutes=10)
)
+
+ def test_hash_invalid_range(self):
+ """Test validation logic for range_begin and range_end values"""
+ try:
+ self._test_iter(
+ 'H(11-10) H * * *', datetime(2020, 1, 1, 11, 31), timedelta(minutes=10)
+ )
+ except (CroniterBadCronError) as ex:
+ self.assertEqual("{0}".format(ex),
+ 'Range end must be greater than range begin')
def test_hash_id_bytes(self):
"""Test hash_id as a bytes object"""