This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author gvanrossum
Recipients ezio.melotti, giampaolo.rodola, gvanrossum, michael.foord, pitrou
Date 2013-05-05.17:23:55
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
In-reply-to <>
On Sun, May 5, 2013 at 4:29 AM, Antoine Pitrou <> wrote:
> Antoine Pitrou added the comment:
>> OTOH it's a useful option to have in case you're tracking down
>> something that happens (or doesn't happen) when an object is collected
> IMO this is a good reason to implement your specific tearDown method (or call addCleanup if you prefer), possibly in a shared base class.
> I don't think this is a good candidate for a command-line option, it's too specialized and it's also not something which should be enabled blindly. In other words, each test case should know whether it needs a collection or not.

This is not for tests that know or expect they need a call to
gc.collect(). This is for the case where you have 500 tests that
weren't written with gc.collect() in mind, and suddenly you have a
nondeterministic failure because something goes wrong during
collection. The cause is probably many tests earlier -- and if you
could just call gc.collect() in each tearDown() it would be a cinch to
pinpoint the test that causes this. But (unless you had all that
foresight) that's a massive undertaking. However turning on the
command line option makes it trivial.

It's rare that extra collections cause tests to fail (and if it does
that's a flakey test anyway) so just turning this on for all tests
shouldn't affect correct tests -- however it can slow down your test
suite 3x or more so you don't want this to be unittest's default
behavior. Hence the suggestion of a command line flag.
Date User Action Args
2013-05-05 17:23:55gvanrossumsetrecipients: + gvanrossum, pitrou, giampaolo.rodola, ezio.melotti, michael.foord
2013-05-05 17:23:55gvanrossumlinkissue17908 messages
2013-05-05 17:23:55gvanrossumcreate