There are three IDLE test failures in the 3.2 branch: $ ./python.exe Lib/idlelib/CallTips.py list.append - expected 'L.append(object) -> None -- append object to end' - but got 'L.append(object) -- append object to end' [].append - expected 'L.append(object) -> None -- append object to end' - but got 'L.append(object) -- append object to end' List.append - expected 'L.append(object) -> None -- append object to end' - but got 'L.append(object) -- append object to end' 3 of 41 tests failed
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 #12510 patch -- -- 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.
History
Date
User
Action
Args
2022-04-11 14:57:39
admin
set
github: 60859
2014-01-21 08:17:52
terry.reedy
set
status: open -> closedresolution: fixedmessages: + stage: resolved