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