diff options
author | sg3-141-592 <5122866+sg3-141-592@users.noreply.github.com> | 2023-04-12 14:08:07 +0000 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2023-04-12 18:02:23 +0200 |
commit | 027366fb148a180dcce0baa0d7d634fc73dbfe20 (patch) | |
tree | 66fd5f65d60a955fa4b40edcddb873cea88e8014 | |
parent | fd3fb86aa83b8d74f0108a061482896fcdd14edb (diff) | |
download | croniter-027366fb148a180dcce0baa0d7d634fc73dbfe20.tar.gz |
Adding check for range begin end
-rw-r--r-- | src/croniter/croniter.py | 4 | ||||
-rw-r--r-- | src/croniter/tests/test_croniter_hash.py | 10 |
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""" |