Issue 9859: Add tests to verify API match of modules with 2 implementations (original) (raw)

process

Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: gregory.p.smith Nosy List: BreamoreBoy, belopolsky, berker.peksag, brett.cannon, eric.araujo, gregory.p.smith, laura, pitrou, python-dev, r.david.murray, stutzbach, terry.reedy
Priority: low Keywords: patch

Created on 2010-09-15 13:46 by stutzbach, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
issue9859.patch laura,2015-04-14 16:21 review
issue9859_1.patch laura,2015-04-14 19:23 review
Messages (16)
msg116445 - (view) Author: Daniel Stutzbach (stutzbach) (Python committer) Date: 2010-09-15 13:46
Recently it came to light that the classes in C and Python implementations of the io module have slightly different attributes (). I propose the addition of a helper function in Lib/test/support.py to verify that the classes in two different implementations define the same attributes. Then, we can add tests to use that function to verify that C and Python implementations define the same API (for the io module, but also for other modules where we have two implementations). The script I added to could serve as a starting point for such a function. Since CPython's standard library is the de facto reference implementation, it's important that it define one API and not two slightly different ones. :-)
msg116452 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-09-15 14:56
Shouldn't the test suite catch such discrepancies by testing all of the API? So your script catching something would be the equivalent of "oops, we forgot a test" (or "oops, this name shouldn't be public"). Which is not a bad thing to have as part of the test suite.
msg116453 - (view) Author: Daniel Stutzbach (stutzbach) (Python committer) Date: 2010-09-15 15:03
Yes, exactly. :-) (see also Issue9731, which has a similar flavor)
msg116752 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2010-09-18 03:32
+1 I presume you can use the experience with #9858 to either refine the program to have fewer false positives or refine the program doc to explain the possibility where such are unavoidable. (And as a lint-like metatest, I think false positives are better than false negatives.)
msg221823 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2014-06-28 23:57
@Daniel do you intend putting forward a formal patch on this issue? I'm asking as I think is effectively completed and I've just asked for a formal patch review on Issue9731.
msg240932 - (view) Author: Laura Rupprecht (laura) * Date: 2015-04-14 16:21
Created a patch to check whether classes define the same attributes. This adds a test for RawIOBase, where Python and and C implementations are out of sync, but skips one of the tests as the issue () is still outstanding.
msg240938 - (view) Author: Daniel Stutzbach (stutzbach) (Python committer) Date: 2015-04-14 16:35
With regret, I have not had time to work on patches and am unlikely to have time in the near future.
msg240941 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2015-04-14 16:46
Thanks for the patch! I've reviewed it on Rietveld: http://bugs.python.org/review/9859/
msg240993 - (view) Author: Laura Rupprecht (laura) * Date: 2015-04-14 19:23
Thanks Berker! I've added some updates to the patch taking your suggestions into account. There is also a change from using "detect_module_matches" to "detect_api_mismatch", as it is a more general (and accurate) description. Also, adding tests for the "detect_api_mismatch" helper function.
msg241002 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-04-14 19:58
New changeset b42d1f2aa7a2 by Gregory P. Smith in branch 'default': : Adds a test.support.detect_api_mismatch function useful to https://hg.python.org/cpython/rev/b42d1f2aa7a2 New changeset 0b6c894c3c96 by Gregory P. Smith in branch 'default': : Adds a CPyMatchTest test case to compare the exposed APIs https://hg.python.org/cpython/rev/0b6c894c3c96
msg241004 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2015-04-14 20:00
I've added a couple of comments about the test: http://bugs.python.org/review/9859/
msg241008 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2015-04-14 20:06
Thanks! Patch applied. I reworded one doc string slightly and fixed up a few lines that were longer than 80 characters. Berker's most recent comments are good ones and can be addressed in another patch. Laura, can you jump through the https://www.python.org/psf/contrib/contrib-form/ hoop? (it'll add the "*" next to your name in the bug tracker showing the contributor form has been signed) Still TODO: fix the actual issue of the APIs being different. ()
msg241012 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-04-14 20:26
New changeset 9903368b9d7b by Gregory P. Smith in branch 'default': : rename CPyMatchTest to APIMismatchTest and add @support.cpython_only. https://hg.python.org/cpython/rev/9903368b9d7b New changeset cbdd56d07123 by Gregory P. Smith in branch 'default': : Document test.support.detect_api_mismatch() and simplify its test. https://hg.python.org/cpython/rev/cbdd56d07123
msg241026 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-04-14 20:54
New changeset c6df85e1d42e by Gregory P. Smith in branch 'default': : Use an expected failure rather than a skip. https://hg.python.org/cpython/rev/c6df85e1d42e
msg241036 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2015-04-14 21:45
Thanks :)
msg241046 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-04-14 22:25
New changeset 0316811f33b2 by Gregory P. Smith in branch 'default': : add the missing versionadded tag to the documentation. https://hg.python.org/cpython/rev/0316811f33b2
History
Date User Action Args
2022-04-11 14:57:06 admin set github: 54068
2015-04-14 22:25:19 python-dev set messages: +
2015-04-14 21:45:54 berker.peksag set messages: + stage: patch review -> resolved
2015-04-14 21:39:01 gregory.p.smith set status: open -> closedresolution: fixed
2015-04-14 20:54:20 python-dev set messages: +
2015-04-14 20:26:47 python-dev set messages: +
2015-04-14 20:06:49 gregory.p.smith set messages: +
2015-04-14 20:00:54 berker.peksag set messages: +
2015-04-14 19:58:58 python-dev set nosy: + python-devmessages: +
2015-04-14 19:23:46 laura set files: + issue9859_1.patchmessages: +
2015-04-14 16:46:59 berker.peksag set versions: + Python 3.5, - Python 3.2nosy: + berker.peksagmessages: + stage: needs patch -> patch review
2015-04-14 16:40:03 gregory.p.smith set assignee: gregory.p.smithnosy: + gregory.p.smith
2015-04-14 16:35:20 stutzbach set messages: +
2015-04-14 16:21:10 laura set files: + issue9859.patchnosy: + lauramessages: + keywords: + patch
2014-06-28 23:57:22 BreamoreBoy set nosy: + BreamoreBoymessages: +
2011-05-07 15:29:55 eric.araujo set nosy: + brett.cannon, belopolsky, pitrou, eric.araujo
2010-09-18 03:32:07 terry.reedy set nosy: + terry.reedymessages: +
2010-09-15 15:03:22 stutzbach set messages: +
2010-09-15 14:56:06 r.david.murray set nosy: + r.david.murraymessages: +
2010-09-15 13:46:35 stutzbach create