Code

Opened 21 months ago

Closed 11 months ago

Last modified 4 weeks ago

#18727 closed Cleanup/optimization (fixed)

Remove django.test._doctest

Reported by: aaugustin Owned by: nobody
Component: Testing framework Version: master
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 aaugustin)

We have copied this module from the standard library and submitted the patch to Python's bug tracker six years ago: http://bugs.python.org/issue1521051

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.

Attachments (0)

Change History (8)

comment:1 Changed 21 months ago by aaugustin

  • Description modified (diff)

comment:2 Changed 21 months ago by russellm

  • Triage Stage changed from Unreviewed to Design 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 13 months ago by aaugustin

  • Triage Stage changed from Design decision needed to Accepted

Let's do this with #17365 then.

comment:4 Changed 11 months ago by Carl Meyer <carl@…>

  • Resolution set to fixed
  • Status changed from new to closed

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 11 months ago by carljm

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

comment:6 Changed 11 months ago by Florian Apolloner <florian@…>

In e23a5f9a4730ddecb8f3950ee2936716f458c506:

Fixed a regression in the test runner loading of runtests.py.

Refs #17365, #17366, #18727.

comment:7 Changed 11 months 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 4 weeks ago by Tim Graham <timograham@…>

In bf5430a20b65b3e76a2f8cd2580101e0baa59f82:

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

refs #17365, #17366, #18727.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.