From ffd8fe36b1707d6f7cc5c30d68ab9dde5af2275c Mon Sep 17 00:00:00 2001 From: Andrea Salvatori <16443598+Sonic0@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:40:58 +0200 Subject: [PATCH] Fix tests errors message assertion --- cron_converter/sub_modules/part.py | 7 +++-- tests/integration/fixtures/invalid_crons.py | 29 ++++++++++++--------- tests/integration/tests_cron_invalid.py | 3 ++- tests/unit/tests_part.py | 2 ++ 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/cron_converter/sub_modules/part.py b/cron_converter/sub_modules/part.py index 28052b6..57f8759 100644 --- a/cron_converter/sub_modules/part.py +++ b/cron_converter/sub_modules/part.py @@ -84,7 +84,7 @@ def from_string(self, cron_part: str) -> None: raise ValueError(f'Invalid value {string_part!r} in cron part {cron_part!r}') range_string = range_step_string_parts[0] if not range_string: - raise ValueError(f'Invalid value {range_string}') + raise ValueError(f'Invalid value {string_part!r} for {self.unit.get("name")!r}') elif range_string == '*': range_list = self.possible_values() else: @@ -115,8 +115,7 @@ def _fix_sunday(self, values: List[int]) -> List[int]: values = [0 if value == 7 else value for value in values] return values - @staticmethod - def _parse_range(unit_range: str) -> List[int]: + def _parse_range(self, unit_range: str) -> List[int]: """Parses a range string. Example: input="15-19" output=[15, 16, 17, 18, 19] :param unit_range: The range string. @@ -139,7 +138,7 @@ def _parse_range(unit_range: str) -> List[int]: except ValueError as exc: raise ValueError(f'Invalid min or max value from: {unit_range!r} --> {exc}') if max_value < min_value: - raise ValueError(f'Max range is less than min range in {unit_range}') + raise ValueError(f'Max range is less than min range in {unit_range!r} for {self.unit.get("name")!r}') return [int_value for int_value in range(min_value, max_value + 1)] else: raise ValueError(f'Invalid value {unit_range}') diff --git a/tests/integration/fixtures/invalid_crons.py b/tests/integration/fixtures/invalid_crons.py index 6959b41..df9b8f2 100644 --- a/tests/integration/fixtures/invalid_crons.py +++ b/tests/integration/fixtures/invalid_crons.py @@ -17,61 +17,66 @@ { 'string': '0 0 0 0 0', 'error': ValueError, - 'message': 'Value "0" out of range for day' + 'message': "Value 0 out of range for 'day'" }, { 'string': '0 0 0 1 0', 'error': ValueError, - 'message': 'Value "0" out of range for day' + 'message': "Value 0 out of range for 'day'" }, { 'string': '0 0 1 0 0', 'error': ValueError, - 'message': 'Value "0" out of range for month' + 'message': "Value 0 out of range for 'month'" }, { 'string': '/ / / / /', 'error': ValueError, - 'message': 'Invalid value "/" for minute' + 'message': "Invalid value '/' for 'minute'" }, { 'string': '60 5 5 5 5', 'error': ValueError, - 'message': 'Value "60" out of range for minute' + 'message': "Value 60 out of range for 'minute'" }, { 'string': '/5 5 5 5 5', 'error': ValueError, - 'message': 'Invalid value "/5" for minute' + 'message': "Invalid value '/5' for 'minute'" }, { 'string': '10-5/5 5 5 5 5', 'error': ValueError, - 'message': 'Max range is less than min range in "10-5" for minute' + 'message': "Max range is less than min range in '10-5' for 'minute'" }, { 'string': '* * 0 * *', 'error': ValueError, - 'message': 'Value "0" out of range for day' + 'message': "Value 0 out of range for 'day'" }, { 'string': '* * * 0 *', 'error': ValueError, - 'message': 'Value "0" out of range for month' + 'message': "Value 0 out of range for 'month'" }, { 'string': '0/5/5 * * 0 *', 'error': ValueError, - 'message': 'Invalid value "0/5/5" for minute' + 'message': "Invalid value '0/5/5' in cron part '0/5/5'" + }, + { + 'string': '* 1-12/0 * * *', + 'error': ValueError, + 'message': "Invalid interval step value '0' for 'hour'" }, { 'string': '5/a * * * *', 'error': ValueError, - 'message': 'Invalid interval step value "a" for minute' + 'message': "Invalid interval step value 'a' for 'minute'" }, { 'string': '5/ * * * *', 'error': ValueError, - 'message': 'Invalid interval step value "" for minute' + 'message': "Invalid interval step value '' for 'minute'" } ] diff --git a/tests/integration/tests_cron_invalid.py b/tests/integration/tests_cron_invalid.py index be7182f..e8abaf8 100644 --- a/tests/integration/tests_cron_invalid.py +++ b/tests/integration/tests_cron_invalid.py @@ -10,6 +10,7 @@ class CronTestInvalid(unittest.TestCase): def test_from_string(self): for invalid_cron in invalid_crons: with self.subTest(range=invalid_cron): - with self.assertRaises(invalid_cron['error'], msg=invalid_cron['message']): + with self.assertRaises(invalid_cron['error']) as error: cron = Cron() cron.from_string(invalid_cron['string']) + self.assertEqual(str(error.exception), invalid_cron['message']) diff --git a/tests/unit/tests_part.py b/tests/unit/tests_part.py index bfa4503..d157af2 100644 --- a/tests/unit/tests_part.py +++ b/tests/unit/tests_part.py @@ -20,6 +20,8 @@ def test_get_step(self): self.assertEqual(part.get_step(), 3, "The result has to be 3") part.values = [1, 6, 11] self.assertEqual(part.get_step(), 5, "The result has to be 5") + part.values = [1, 2, 3, 4, 5, 6] + self.assertIsNone(part.get_step(), "The result has to be None") def test_is_interval(self): part = Part(units[0], {})