msg122411 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2010-11-25 22:08 |
Warnings should be on by default in unittest so that developers can see them while running the tests even if they are silenced by default in Python. The plan is to add a "warnings" argument to TestProgram and the default TextTestRunner: * if the argument is passed always use it as a filter (e.g. default, ignore, all, ...) for warnings; * if the argument is not passed and sys.warnoptions is not [] (i.e. python has been called with "-W something") don't do anything (i.e. use the warnings specified by -W); * if the argument is not passed and sys.warnoptions is [], use 'default' (i.e. show warnings). In order to prevent floods of warnings when the deprecated assertEquals, assert_, etc. are used (see #9424), a new type of warning could be created (e.g. _UnittestDeprecationWarning) and filtered so that these warnings are printed only once. |
|
|
msg122438 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2010-11-26 05:18 |
Here's a working patch (without docs and tests). I managed to filter the warnings by message without introducing a new type of warning. As it is, all the warnings related to deprecated unittest methods are printed only once per module, regardless of what methods are used and how many times. I'm also thinking that it might be better to include the name of the deprecated method in the message and use three filters for fail* methods, assert* methods, and the assert*Regexp* methods that will be deprecated. This will show at worst 3 warnings per module, but the assert*Regexp* and the fail* methods are not so common, so it shouldn't be too nosy. One "limitation" of the patch is that the per-module special-casing for unittest is not affect by the `warnings` argument, but it can be changed when -W is used and no `warnings` arg is passed. Regrtest doesn't seem to use unittest, so it should be fixed separately (probably needs another issue). |
|
|
msg122470 - (view) |
Author: Michael Foord (michael.foord) *  |
Date: 2010-11-26 18:35 |
"I'm also thinking that it might be better to include the name of the deprecated method in the message and use three filters for fail* methods, assert* methods, and the assert*Regexp* methods that will be deprecated." That sounds good, well - it sounds *essential*. |
|
|
msg122779 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2010-11-29 08:41 |
Attached a new patch. A few comments about it: 1) A new category for UnittestWarnings could still be added to make it easier to filter warnings using the -W python flags and thus providing more control; 2) I didn't change the deprecation message in the patch -- I will probably do it in a separate commit; 3) The patch touches a few unrelated unittest/test/test_*.py files that were checking for the number of args explicitely; 4) In order to test the different combinations of flags/args I created a new _test_warnings.py file called from test_runner.py via subprocess; 5) unittest warnings are now printed only once even when 'always' is passed as an arg, but not when it's set with -W (this somehow addresses the "limitation" described in my previous message); |
|
|
msg122966 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2010-12-01 00:58 |
Committed in r86908. I'll leave this open because there still a few things (proposed in the previous message) that can be changed/improved. |
|
|
msg123104 - (view) |
Author: Brian Curtin (brian.curtin) *  |
Date: 2010-12-02 19:37 |
Here's a patch for the ResourceWarnings that were introduced. |
|
|
msg131221 - (view) |
Author: Michael Foord (michael.foord) *  |
Date: 2011-03-17 04:57 |
Does Brian's patch still need applying? (Can this be closed?) |
|
|
msg131222 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2011-03-17 05:14 |
Brian's patch is not yet applied afaik, but I couldn't see the warnings here, so it might be something specific to Windows. Brian, can you confirm if you still see the problem? Changing the warning type (to UnittestWarning) and the error message can still be done if you think it's a good idea. Since this fix didn't affect regrtest, another issue for it might be necessary too. |
|
|
msg131251 - (view) |
Author: Brian Curtin (brian.curtin) *  |
Date: 2011-03-17 14:04 |
I'm not seeing those warnings anymore, so I think the patch can be ignored. |
|
|
msg180099 - (view) |
Author: Brett Cannon (brett.cannon) *  |
Date: 2013-01-16 18:47 |
Ezio, do you want to create separate issues for any of the TODOs you wanted in http://bugs.python.org/issue10535#msg122779 so we can close this bug? |
|
|
msg180244 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2013-01-19 12:54 |
The two TODOs left are: 1) adding UnittestWarning; 2) improving the error message for deprecations; Technically these are new features, so they can go in 3.4 only, but 2) might be simple enough to be backported. Regarding 1) it might be a bit too late, given that most deprecations have been around for 2-3 versions already. |
|
|
msg180254 - (view) |
Author: Brett Cannon (brett.cannon) *  |
Date: 2013-01-19 19:21 |
I wouldn't backport; not worth it. Anyway, since I consider this bug closed I'm taking myself off the nosy list. |
|
|
msg180272 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2013-01-19 22:47 |
Agreed, closing. |
|
|