From 2f4e08ae502f1b2fd9ac9c67c03271865d438a7c Mon Sep 17 00:00:00 2001 From: Michael Overmeyer Date: Sun, 27 Nov 2022 19:35:53 -0500 Subject: [PATCH] Add the reason the test timestamp is invalid --- generate_test_timestamps.py | 14 +++++++------- tests/tests.py | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/generate_test_timestamps.py b/generate_test_timestamps.py index e3a2585..5a73316 100644 --- a/generate_test_timestamps.py +++ b/generate_test_timestamps.py @@ -231,25 +231,25 @@ def generate_invalid_timestamp(year=2014, month=2, day=3, iso_week=6, iso_day=1, str_value = str(__pad_params(**{field_name: kwargs[field_name]})[field_name])[0:length] mangled_kwargs[field_name] = "{{:0>{length}}}".format(length=length).format(str_value) timestamp = timestamp_format.format(**mangled_kwargs) - yield timestamp + yield (timestamp, "{0} has too few characters".format(field_name)) # Too many characters if field.max_width is not None: mangled_kwargs[field_name] = "{{:0>{length}}}".format(length=field.max_width + 1).format(kwargs[field_name]) timestamp = timestamp_format.format(**mangled_kwargs) - yield timestamp + yield (timestamp, "{0} has too many characters".format(field_name)) # Too small of value if (field.min_value - 1) >= 0: mangled_kwargs[field_name] = __pad_params(**{field_name: field.min_value - 1})[field_name] timestamp = timestamp_format.format(**mangled_kwargs) - yield timestamp + yield (timestamp, "{0} has too small value".format(field_name)) # Too large of value if field.max_value is not None: mangled_kwargs[field_name] = __pad_params(**{field_name: field.max_value + 1})[field_name] timestamp = timestamp_format.format(**mangled_kwargs) - yield timestamp + yield (timestamp, "{0} has too large value".format(field_name)) # Invalid characters max_invalid_characters = field.max_width if field.max_width is not None else 1 @@ -257,14 +257,14 @@ def generate_invalid_timestamp(year=2014, month=2, day=3, iso_week=6, iso_day=1, for length in range(1, max_invalid_characters): mangled_kwargs[field_name] = "a" * length timestamp = timestamp_format.format(**mangled_kwargs) - yield timestamp + yield (timestamp, "{0} has invalid characters".format(field_name)) # ex. 2014 -> aaaa, 2aaa, 20aa, 201a for length in range(0, max_invalid_characters): str_value = str(__pad_params(**{field_name: kwargs[field_name]})[field_name])[0:length] mangled_kwargs[field_name] = "{{:a<{length}}}".format(length=max_invalid_characters).format(str_value) timestamp = timestamp_format.format(**mangled_kwargs) - yield timestamp + yield (timestamp, "{0} has invalid characters".format(field_name)) # Trailing characters timestamp = timestamp_format.format(**__pad_params(**kwargs)) + "EXTRA" - yield timestamp + yield (timestamp, "{0} has extra characters".format(field_name)) diff --git a/tests/tests.py b/tests/tests.py index cf8c051..4e1f0c1 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -72,12 +72,12 @@ class InvalidTimestampTestCase(unittest.TestCase): # See `generate_test_timestamps.generate_invalid_timestamp` for details. def test_parse_auto_generated_invalid_formats(self): - for timestamp in generate_invalid_timestamp(): + for timestamp, reason in generate_invalid_timestamp(): try: - with self.assertRaises(ValueError, msg="Timestamp '{0}' was supposed to be invalid, but parsing it didn't raise ValueError.".format(timestamp)): + with self.assertRaises(ValueError, msg="Timestamp '{0}' was supposed to be invalid ({1}), but parsing it didn't raise ValueError.".format(timestamp, reason)): parse_datetime(timestamp) except Exception as exc: - print("Timestamp '{0}' was supposed to raise ValueError, but raised {1} instead".format(timestamp, type(exc).__name__)) + print("Timestamp '{0}' was supposed to raise ValueError ({1}), but raised {2} instead".format(timestamp, reason, type(exc).__name__)) raise def test_non_ascii_characters(self):