You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In 3.2.3
>>> list.append.__doc__
'L.append(object) -- append object to end'
In 3.3.0
>>> list.append.__doc__
'L.append(object) -> None -- append object to end'
I checked the other 6 pure mutation methods.
.sort, .extend, .remove, and the new .clear have the same new addition of ' -> None'.
.insert and .reverse do not (but it seems they should).
It seems I pushed the June 7 bpo-12510 patch -- msg162510 -- which added the .append tests, without properly testing in 3.2. A fix for 3.2 is easy, but the deeper issue is the fragility of comparing external text to hard-coded expected text. I knew when I wrote the tests that that could and would be a problem in the future, but did not notice that it already was.
One solution is not to compare again external strings; but then how do we know that the tooltips work with such? Another is to fetch the external string in the test code, but that amounts to duplicating the code in the tooltip function and testing it against itself; so is it really a test? The third option is to leave the tests vulnerable and patch them in a version specific manner when they break.
When I moved tests from CallTips.py to test_calltips.py, I reduced but did not eliminate the use of builtins. I decided instead to explain in the file why there is no substitute for the real thing, and how to fix a simple mismatch like that reported here.
Activity
cjerdonek commentedon Dec 10, 2012
There are three IDLE test failures in the 3.2 branch:
terryjreedy commentedon Dec 15, 2012
I checked the other 6 pure mutation methods.
.sort, .extend, .remove, and the new .clear have the same new addition of ' -> None'.
.insert and .reverse do not (but it seems they should).
It seems I pushed the June 7 bpo-12510 patch -- msg162510 -- which added the .append tests, without properly testing in 3.2. A fix for 3.2 is easy, but the deeper issue is the fragility of comparing external text to hard-coded expected text. I knew when I wrote the tests that that could and would be a problem in the future, but did not notice that it already was.
One solution is not to compare again external strings; but then how do we know that the tooltips work with such? Another is to fetch the external string in the test code, but that amounts to duplicating the code in the tooltip function and testing it against itself; so is it really a test? The third option is to leave the tests vulnerable and patch them in a version specific manner when they break.
cjerdonek commentedon Dec 16, 2012
Could you mock or monkey-patch what you are getting a tool tip for (i.e. set the "external" string you are checking for)?
python-dev commentedon Jan 21, 2014
New changeset 779e5511d803 by Terry Jan Reedy in branch '2.7':
Issue bpo-16655: Explain why Idle's test_calltips has 'fragile' tests of builtins.
http://hg.python.org/cpython/rev/779e5511d803
New changeset 4a505a901b2e by Terry Jan Reedy in branch '3.3':
Issue bpo-16655: Explain why Idle's test_calltips has 'fragile' tests of builtins.
http://hg.python.org/cpython/rev/4a505a901b2e
New changeset c4a2d0538441 by Terry Jan Reedy in branch 'default':
Issue bpo-16655: Explain why Idle's test_calltips has 'fragile' tests of builtins.
http://hg.python.org/cpython/rev/c4a2d0538441
terryjreedy commentedon Jan 21, 2014
When I moved tests from CallTips.py to test_calltips.py, I reduced but did not eliminate the use of builtins. I decided instead to explain in the file why there is no substitute for the real thing, and how to fix a simple mismatch like that reported here.