id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 18608 Broken monkey-patching in humanize tests Aymeric Augustin Aymeric Augustin "The tests for `django.contrib.humanize` monkey-patch the `datetime` module in `django.utils.timesince` as follows: {{{ timesince.datetime = new.module(b""mock_datetime"") timesince.datetime.datetime = MockDateTime }}} Unfortunately, this means that `isinstance(d, datetime.datetime)` in `django.utils.timesince` will return `False` while the monkey-patch is in effect even though `d` is a real `datetime.datetime`. The `humanize` tests rely on a fixed value: `now = datetime.datetime(2012, 3, 9)` which happens to be at 0h00. They pass by accident, really. Add an hour and a minute to `now` — this shouldn't matter at all — and they'll fail! This is preventing me from writing correct tests for #18504, because `datetime` objects are treated as `date` objects and their time part is ignored. It's impossible to write tests for edge cases around DST changes with this bug. I hope I don't need to explain how horrible this was to debug :(" Bug closed contrib.humanize 1.4 Normal fixed Accepted 1 0 0 0 0 0