New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add tests to verify API match of modules with 2 implementations #54068
Comments
Recently it came to light that the classes in C and Python implementations of the io module have slightly different attributes (bpo-9858). 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 bpo-9858 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. :-) |
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. |
Yes, exactly. :-) (see also bpo-9731, which has a similar flavor) |
+1 |
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 (bpo-9858) is still outstanding. |
With regret, I have not had time to work on patches and am unlikely to have time in the near future. |
Thanks for the patch! I've reviewed it on Rietveld: http://bugs.python.org/review/9859/ |
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. |
New changeset b42d1f2aa7a2 by Gregory P. Smith in branch 'default': New changeset 0b6c894c3c96 by Gregory P. Smith in branch 'default': |
I've added a couple of comments about the test: http://bugs.python.org/review/9859/ |
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. (bpo-9858) |
New changeset 9903368b9d7b by Gregory P. Smith in branch 'default': New changeset cbdd56d07123 by Gregory P. Smith in branch 'default': |
New changeset c6df85e1d42e by Gregory P. Smith in branch 'default': |
Thanks :) |
New changeset 0316811f33b2 by Gregory P. Smith in branch 'default': |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: