
This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.
Created on2013-05-14 12:34 bypitrou, last changed2022-04-11 14:57 byadmin. This issue is nowclosed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| unittest_argparse.patch | pitrou,2013-05-14 12:34 | review | ||
| unittest_argparse_less_horrible.patch | serhiy.storchaka,2013-05-14 23:04 | review | ||
| unittest_argparse_less_horrible_3.patch | serhiy.storchaka,2013-05-15 19:32 | review | ||
| Messages (15) | |||
|---|---|---|---|
| msg189212 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2013-05-14 12:34 | |
Attached patch migrates unittest to argparse.This doesn't make discover handling much saner, given the awful way it's originally implemented. | |||
| msg189213 -(view) | Author: Michael Foord (michael.foord)*![]() | Date: 2013-05-14 12:36 | |
What's the benefit of this change? | |||
| msg189215 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2013-05-14 12:45 | |
I was considering making it possible to customize command-line options, as requested by Guido, and it's better to expose the modern API rather than the more obsolete one. | |||
| msg189217 -(view) | Author: Michael Foord (michael.foord)*![]() | Date: 2013-05-14 13:13 | |
Ok, feel free to reimplement discovery command line handling if it can be done in a compatible-but-less-horrible way. Anyway, the patch looks fine and a couple of minor cleanups in there. | |||
| msg189218 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-05-14 13:43 | |
I don't see much sense in this modernization, while the code does not use the capabilities of argparse (and even optparse). Why USAGE_AS_MAIN/USAGE_FROM_MODULE/etc exist, why help is not generated automatically? Why -v/-q store boolean flags instead of changing the numerical level of verbosity? | |||
| msg189220 -(view) | Author: Michael Foord (michael.foord)*![]() | Date: 2013-05-14 13:58 | |
Test discovery and new options (buffer, failfast etc) were bolted onto an old and ugly design. Yes the code could use an overhaul and rebuilding from scratch - but doing that whilst remaining fully compatible with all the existing usage patterns is "difficult". | |||
| msg189236 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2013-05-14 16:44 | |
> Ok, feel free to reimplement discovery command line handling if it can> be done in a compatible-but-less-horrible way.I don't think it's possible. Best way forward would be to provide apytest utility that does discovery automatically, and leave "python -munittest" as the lesser, undocumented option. | |||
| msg189254 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-05-14 23:04 | |
Here is a patch which reimplement discovery command line handling in a i-hope-in-compatible-but-less-horrible way (and fixes some bugs). It is horrible still, but I doubt how many changes can I do without breaking compatibility. If _do_discovery() used only in tests, I can clean the code more.I suppose discovery mode doesn't make sense when unittest.main() is called from a test module (i.e. "./pythonLib/test/test_bisect.py discover"). At least USAGE_FROM_MODULE did not mention this mode. | |||
| msg189279 -(view) | Author: Michael Foord (michael.foord)*![]() | Date: 2013-05-15 09:36 | |
Discovery from a module importing main doesn't make sense (although from a *script* importing main it does).So long as "python -m unittest -v" continues to launch discovery, and the "positional argument" form of discovery still works, then the new patch looks good. I'll try it out and confirm.In general I agree with Antoine, the best way to improve the implementation of unittest.main is to provide a new discovery script (with supporting code that is then much easier to extend). | |||
| msg189294 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-05-15 19:32 | |
Here is other variant of patch, even less horrible. However it introduces some incompatibility:1. Discovery mode now works only when module==None (i.e. from "-m unittest"). It is only case for which it was documented.2. Previously unittest.main(failfast=False, argv=['prog', '-f']) caused an error, while unittest.main(failfast=True, argv=['prog', '-f']) and unittest.main(failfast=[], argv=['prog', '-f']) just had no any effect. Now all non-None casse cause an error. The same for catchbreak and buffer. | |||
| msg194682 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-08-08 14:55 | |
Is the patch good? | |||
| msg194720 -(view) | Author: Michael Foord (michael.foord)*![]() | Date: 2013-08-09 09:20 | |
The patch looks like an improvement. Does it maintain the ability to pass the discovery arguments positionally and by keyword? If so then it can go in. I like the improved error reporting for nonsenical input to unittest.main. | |||
| msg194721 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-08-09 10:00 | |
> Does it maintain the ability to pass the discovery arguments positionally and by keyword?Yes, of course. Only such command line are not supported more: ./pythonLib/test/test_colorsys.py discover -vLib/test/test_json/or ./python -m test.test_colorsys discover -vLib/test/test_json/But this looks as an unintentional and senseless ability. | |||
| msg196447 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2013-08-29 09:01 | |
I think this should be committed. This is the first step in making command-line args easily customizable (e.g. by exposing the parsers as a public API in TestProgram). | |||
| msg196451 -(view) | Author: Roundup Robot (python-dev)![]() | Date: 2013-08-29 09:38 | |
New changeset340f45374cf5 by Serhiy Storchaka in branch 'default':Issue#17974: Switch unittest from using getopt to using argparse.http://hg.python.org/cpython/rev/340f45374cf5 | |||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:57:45 | admin | set | github: 62174 |
| 2013-08-29 09:39:50 | serhiy.storchaka | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2013-08-29 09:38:30 | python-dev | set | nosy: +python-dev messages: +msg196451 |
| 2013-08-29 09:01:17 | pitrou | set | messages: +msg196447 |
| 2013-08-24 06:15:12 | martin.panter | set | nosy: +martin.panter |
| 2013-08-09 10:00:22 | serhiy.storchaka | set | messages: +msg194721 |
| 2013-08-09 09:20:54 | michael.foord | set | messages: +msg194720 |
| 2013-08-08 14:55:57 | serhiy.storchaka | set | keywords: +needs review assignee:serhiy.storchaka messages: +msg194682 |
| 2013-05-15 19:32:46 | serhiy.storchaka | set | files: +unittest_argparse_less_horrible_3.patch messages: +msg189294 |
| 2013-05-15 09:36:27 | michael.foord | set | messages: +msg189279 |
| 2013-05-15 02:10:20 | berker.peksag | set | nosy: +berker.peksag |
| 2013-05-14 23:04:24 | serhiy.storchaka | set | files: +unittest_argparse_less_horrible.patch messages: +msg189254 |
| 2013-05-14 16:44:00 | pitrou | set | messages: +msg189236 |
| 2013-05-14 14:01:04 | barry | set | nosy: +barry |
| 2013-05-14 13:58:35 | michael.foord | set | messages: +msg189220 |
| 2013-05-14 13:43:35 | serhiy.storchaka | set | nosy: +serhiy.storchaka messages: +msg189218 |
| 2013-05-14 13:13:58 | michael.foord | set | messages: +msg189217 |
| 2013-05-14 12:45:01 | pitrou | set | messages: +msg189215 |
| 2013-05-14 12:36:44 | michael.foord | set | messages: +msg189213 |
| 2013-05-14 12:34:45 | pitrou | create | |