New submission from Ned Deily: Although the turtledemo modules are not run directly during by "make test" or by "python -m test -uall", they are currently being inadvertently imported by test___all__. This can lead to test failures and side effects because some of the turtledemo modules execute code on import, rather than only when being run via calls to their main() functions. A quick glance shows problems with the following demos: clock (calls mode("logo") which causes a window to appear), colormixer (which unconditionally calls sys.setrecursionlimit()), and two_canvases (which is not structured using functions at all). Depending on how tests are run, these problems can cause serious side effects.
At a minimum, 1. test___all__ should be changed to exclude turtledemo modules. It would also be nice to make the demos better citizens: 2. move the mode() call to main() in clock 3. move the setrecursionlimit call to main() and save and restore the original value on exit 4. restructure two_canvases to be like the other demos. 5. double-check all demos for other cases where interpreter state is changed and not restored. ---------- components: Tests keywords: easy messages: 221921 nosy: ned.deily priority: normal severity: normal stage: test needed status: open title: turtledemo modules imported by test___all__ cause side effects or failures versions: Python 3.4, Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue21882> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com