On 7/30/2013 1:31 PM, R. David Murray wrote:
On Sun, 28 Jul 2013 01:09:43 +0200, terry.reedy <python-check...@python.org>
wrote:
Issue #18441: Make test.support.requires('gui') skip when it should.
(Consolidating this check and various checks in tkinter files and moving them
to test.support and test.regrtest will be another issue.)
+# Skip test if _thread or _tkinter wasn't built or idlelib was deleted.
+from test.test_support import import_module, use_resources
+import_module('threading') # imported by idlelib.PyShell, imports _thread
+tk = import_module('Tkinter')
idletest = import_module('idlelib.idle_test')
+# If buildbot improperly sets gui resource (#18365, #18441), remove it
+# so requires('gui') tests are skipped while non-gui tests still run.
+if use_resources and 'gui' in use_resources:
+ try:
+ root = tk.Tk()
+ root.destroy()
+ except TclError:
+ while True:
+ use_resources.delete('gui')
+ if 'gui' not in use_resources:
+ break
I believe that this logic is incorrect.
It works for the intended purpose.
If regrtest is run with "-u gui", given this code the skip message will
> be "requires gui resource" but the caller specified the gui resource,
> which will make the skip message completely confusing.
The message is accurate; string 'gui' does not create or enable the
required physical graphics subsystem. Anyway, the message is not in any
of the current buildbot reports I looked at. This patch has no effect on
normal machines with graphics and nor on most of the buildbots (at least
the stable one). On the 3 stable buildbots it is written for, the
message will only appear if test_idle fails (in one of the text tests
that do run) and is rerun or displayed in verbose mode. I doubt that
such a rare occurrence will seriously confuse any of the few developers
who will read the verbose idle_test output.
Instead, if it is true that 'gui' always means 'tk must work', then the
_is_gui_available function should do the Tk() check. Currently as far
as I can see it is indeed the case that requires('gui') always means tk
must work. So, I believe that the correct fix is to move
check_tk_availability to test.support, and call it from
_is_gui_available.
Ned and I agreed in the issue discussion that gui checks (also in
tkinter files) should be consolidated into test.support. See
http://bugs.python.org/issue18604
The check in this patch will be modified or simply removed once that is
done. But I need it here now to continue pushing new idle tests.
A consolidated gui check could report to the user something like "'gui'
is being ignored because graphics are not usable".
> If we ever add another gui toolkit, we can deal with
moving the tk check out into a separate 'tk' resource at that time.
The above check is intended mostly as a gui check, not a tk check,
because it is only performed after successfully importing tkinter, which
imports _tkinter, which initializes tcl/tk.
--
Terry Jan Reedy
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com