Opened 11 years ago

Closed 10 years ago

Last modified 9 years ago

#18727 closed Cleanup/optimization (fixed)

Remove django.test._doctest

Reported by: Aymeric Augustin Owned by: nobody
Component: Testing framework Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Aymeric Augustin)

We have copied this module from the standard library and submitted the patch to Python's bug tracker six years ago:

Unfortunately the ticket is stuck because the patch didn't include tests. Even if tests were added and the patch was committed now, we'd have to deprecate all Pythons <= 3.3 before removing our copy and relying on the stdlib. This isn't going to happen in the next five years.

Patching our copy to support both Python 2 and 3 increases severely the amount of changes from Python's version. It becomes much harder to apply upstream changes. We could copy both the version from 2.7 and the version from 3.2, apply the patch to both, and import the right one, but that adds complexity.

I think we'd better deprecate our copy:

  • doctests aren't a suitable tool for testing Django apps (IMO),
  • we moved away from using doctests in Django's test suite,
  • Russell suggested it two years ago in the tickets comments.

Change History (8)

comment:1 Changed 11 years ago by Aymeric Augustin

Description: modified (diff)

comment:2 Changed 11 years ago by Russell Keith-Magee

Triage Stage: UnreviewedDesign decision needed

I'm the author of that ticket, and the person responsible for there being no tests. If I'd finished the job in 2006, it would have been a non-issue, but as it is, we have a headache.

However, we need to be clear about what it is we'd be deprecating -- it's not just removing our copy of doctests, we'd be deprecating the ability for Django's test runner to identify and include doctests. The reason the modified doctest package exists is for integration with our test runner; if we remove the duplicate package, we lose the features we need to integrate with the test runner.

Since the doctest-ocalypse, this isn't an issue for Django itself; however, I can imagine that it may be problematic for some users.

Personally, I have no problems killing doctests in this way. I'm sure others share my enthusiasm. I'm also sure that some do not.

Another way to tackle this problem -- make it part of #17365. If we change our test discovery mechanism to be something standardized, we can fall back on the standardized behaviour, which won't include doctests by default.

comment:3 Changed 10 years ago by Aymeric Augustin

Triage Stage: Design decision neededAccepted

Let's do this with #17365 then.

comment:4 Changed 10 years ago by Carl Meyer <carl@…>

Resolution: fixed
Status: newclosed

In 9012833af857e081b515ce760685b157638efcef:

Fixed #17365, #17366, #18727 -- Switched to discovery test runner.

Thanks to Preston Timmons for the bulk of the work on the patch, especially
updating Django's own test suite to comply with the requirements of the new
runner. Thanks also to Jannis Leidel and Mahdi Yusuf for earlier work on the
patch and the discovery runner.

Refs #11077, #17032, and #18670.

comment:5 Changed 10 years ago by Carl Meyer

Closing this ticket, as django.test._doctest has now been deprecated and will be removed on the normal deprecation schedule.

comment:6 Changed 10 years ago by Florian Apolloner <florian@…>

In e23a5f9a4730ddecb8f3950ee2936716f458c506:

Fixed a regression in the test runner loading of

Refs #17365, #17366, #18727.

comment:7 Changed 10 years ago by Florian Apolloner <florian@…>

In 2bf403ecbd958bfb269794b36e61b69f0aede4cf:

Fixed a regression from e23a5f9a4730ddecb8f3950ee2936716f458c506.

Excluded postgis specific gis tests from other spatial databases.

Refs #17365, #17366, #18727.

comment:8 Changed 9 years ago by Tim Graham <timograham@…>

In bf5430a20b65b3e76a2f8cd2580101e0baa59f82:

Removed django.test.simple and django.test._doctest per deprecation timeline.

refs #17365, #17366, #18727.

Note: See TracTickets for help on using tickets.
Back to Top