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 <[email protected]>
<http://bugs.python.org/issue21882>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com