Issue #18492: Merge with 3.4
This commit is contained in:
commit
e7e1375e57
|
@ -188,7 +188,6 @@ def get_comment_header(line):
|
|||
return m.group(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
from test import support; support.use_resources = ['gui']
|
||||
import unittest
|
||||
unittest.main('idlelib.idle_test.test_formatparagraph',
|
||||
verbosity=2, exit=False)
|
||||
|
|
|
@ -100,7 +100,5 @@ class History:
|
|||
self.prefix = None
|
||||
|
||||
if __name__ == "__main__":
|
||||
from test import support
|
||||
support.use_resources = ['gui']
|
||||
from unittest import main
|
||||
main('idlelib.idle_test.test_idlehistory', verbosity=2, exit=False)
|
||||
|
|
|
@ -229,6 +229,5 @@ def get_line_col(index):
|
|||
return line, col
|
||||
|
||||
if __name__ == "__main__":
|
||||
from test import support; support.use_resources = ['gui']
|
||||
import unittest
|
||||
unittest.main('idlelib.idle_test.test_searchengine', verbosity=2, exit=False)
|
||||
|
|
|
@ -26,7 +26,6 @@ Once test_xyy is written, the following should go at the end of xyy.py,
|
|||
with xyz (lowercased) added after 'test_'.
|
||||
---
|
||||
if __name__ == "__main__":
|
||||
from test import support; support.use_resources = ['gui']
|
||||
import unittest
|
||||
unittest.main('idlelib.idle_test.test_', verbosity=2, exit=False)
|
||||
---
|
||||
|
@ -34,12 +33,12 @@ if __name__ == "__main__":
|
|||
|
||||
2. Gui Tests
|
||||
|
||||
Gui tests need 'requires' and 'use_resources' from test.support
|
||||
(test.test_support in 2.7). A test is a gui test if it creates a Tk root or
|
||||
master object either directly or indirectly by instantiating a tkinter or
|
||||
idle class. For the benefit of buildbot machines that do not have a graphics
|
||||
screen, gui tests must be 'guarded' by "requires('gui')" in a setUp
|
||||
function or method. This will typically be setUpClass.
|
||||
Gui tests need 'requires' from test.support (test.test_support in 2.7). A
|
||||
test is a gui test if it creates a Tk root or master object either directly
|
||||
or indirectly by instantiating a tkinter or idle class. For the benefit of
|
||||
test processes that either have no graphical environment available or are not
|
||||
allowed to use it, gui tests must be 'guarded' by "requires('gui')" in a
|
||||
setUp function or method. This will typically be setUpClass.
|
||||
|
||||
To avoid interfering with other gui tests, all gui objects must be destroyed
|
||||
and deleted by the end of the test. If a widget, such as a Tk root, is created
|
||||
|
@ -57,11 +56,17 @@ and class attributes, also delete the widget.
|
|||
del cls.root
|
||||
---
|
||||
|
||||
Support.requires('gui') returns true if it is either called in a main module
|
||||
(which never happens on buildbots) or if use_resources contains 'gui'.
|
||||
Use_resources is set by test.regrtest but not by unittest. So when running
|
||||
tests in another module with unittest, we set it ourselves, as in the xyz.py
|
||||
template above.
|
||||
Support.requires('gui') causes the test(s) it guards to be skipped if any of
|
||||
a few conditions are met:
|
||||
- The tests are being run by regrtest.py, and it was started without
|
||||
enabling the "gui" resource with the "-u" command line option.
|
||||
- The tests are being run on Windows by a service that is not allowed to
|
||||
interact with the graphical environment.
|
||||
- The tests are being run on Mac OSX in a process that cannot make a window
|
||||
manager connection.
|
||||
- tkinter.Tk cannot be successfully instantiated for some reason.
|
||||
- test.support.use_resources has been set by something other than
|
||||
regrtest.py and does not contain "gui".
|
||||
|
||||
Since non-gui tests always run, but gui tests only sometimes, tests of non-gui
|
||||
operations should best avoid needing a gui. Methods that make incidental use of
|
||||
|
@ -88,8 +93,8 @@ python -m idlelib.idle_test.test_xyz
|
|||
|
||||
To run all idle_test/test_*.py tests, either interactively
|
||||
('>>>', with unittest imported) or from a command line, use one of the
|
||||
following. (Notes: unittest does not run gui tests; in 2.7, 'test ' (with the
|
||||
space) is 'test.regrtest '; where present, -v and -ugui can be omitted.)
|
||||
following. (Notes: in 2.7, 'test ' (with the space) is 'test.regrtest ';
|
||||
where present, -v and -ugui can be omitted.)
|
||||
|
||||
>>> unittest.main('idlelib.idle_test', verbosity=2, exit=False)
|
||||
python -m unittest -v idlelib.idle_test
|
||||
|
@ -98,13 +103,13 @@ python -m test.test_idle
|
|||
|
||||
The idle tests are 'discovered' by idlelib.idle_test.__init__.load_tests,
|
||||
which is also imported into test.test_idle. Normally, neither file should be
|
||||
changed when working on individual test modules. The third command runs runs
|
||||
changed when working on individual test modules. The third command runs
|
||||
unittest indirectly through regrtest. The same happens when the entire test
|
||||
suite is run with 'python -m test'. So that command must work for buildbots
|
||||
to stay green. Idle tests must not disturb the environment in a way that
|
||||
makes other tests fail (issue 18081).
|
||||
|
||||
To run an individual Testcase or test method, extend the dotted name given to
|
||||
unittest on the command line. (But gui tests will not this way.)
|
||||
unittest on the command line.
|
||||
|
||||
python -m unittest -v idlelib.idle_test.test_xyz.Test_case.test_meth
|
||||
|
|
|
@ -454,23 +454,17 @@ def _is_gui_available():
|
|||
return _is_gui_available.result
|
||||
|
||||
def is_resource_enabled(resource):
|
||||
"""Test whether a resource is enabled. Known resources are set by
|
||||
regrtest.py."""
|
||||
return use_resources is not None and resource in use_resources
|
||||
"""Test whether a resource is enabled.
|
||||
|
||||
Known resources are set by regrtest.py. If not running under regrtest.py,
|
||||
all resources are assumed enabled unless use_resources has been set.
|
||||
"""
|
||||
return use_resources is None or resource in use_resources
|
||||
|
||||
def requires(resource, msg=None):
|
||||
"""Raise ResourceDenied if the specified resource is not available.
|
||||
|
||||
If the caller's module is __main__ then automatically return True. The
|
||||
possibility of False being returned occurs when regrtest.py is
|
||||
executing.
|
||||
"""
|
||||
"""Raise ResourceDenied if the specified resource is not available."""
|
||||
if resource == 'gui' and not _is_gui_available():
|
||||
raise ResourceDenied(_is_gui_available.reason)
|
||||
# see if the caller's module is __main__ - if so, treat as if
|
||||
# the resource was set
|
||||
if sys._getframe(1).f_globals.get("__name__") == "__main__":
|
||||
return
|
||||
if not is_resource_enabled(resource):
|
||||
if msg is None:
|
||||
msg = "Use of the %r resource not enabled" % resource
|
||||
|
|
|
@ -16,5 +16,4 @@ def test_main():
|
|||
support.run_unittest(__name__)
|
||||
|
||||
if __name__ == "__main__":
|
||||
support.use_resources = ['urlfetch']
|
||||
test_main()
|
||||
|
|
|
@ -5556,7 +5556,7 @@ else:
|
|||
all_tests.insert(1, SignatureTest)
|
||||
|
||||
|
||||
def test_main(arith=False, verbose=None, todo_tests=None, debug=None):
|
||||
def test_main(arith=None, verbose=None, todo_tests=None, debug=None):
|
||||
""" Execute the tests.
|
||||
|
||||
Runs all arithmetic tests if arith is True or if the "decimal" resource
|
||||
|
@ -5566,7 +5566,7 @@ def test_main(arith=False, verbose=None, todo_tests=None, debug=None):
|
|||
init(C)
|
||||
init(P)
|
||||
global TEST_ALL, DEBUG
|
||||
TEST_ALL = arith or is_resource_enabled('decimal')
|
||||
TEST_ALL = arith if arith is not None else is_resource_enabled('decimal')
|
||||
DEBUG = debug
|
||||
|
||||
if todo_tests is None:
|
||||
|
|
|
@ -13,8 +13,4 @@ idletest = import_module('idlelib.idle_test')
|
|||
load_tests = idletest.load_tests
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Until unittest supports resources, we emulate regrtest's -ugui
|
||||
# so loaded tests run the same as if textually present here.
|
||||
# If any Idle test ever needs another resource, add it to the list.
|
||||
support.use_resources = ['gui'] # use_resources is initially None
|
||||
unittest.main(verbosity=2, exit=False)
|
||||
|
|
|
@ -501,5 +501,4 @@ def load_tests(*args):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
support.use_resources = ['network']
|
||||
unittest.main()
|
||||
|
|
|
@ -291,5 +291,4 @@ def load_tests(loader, suite, pattern):
|
|||
return suite
|
||||
|
||||
if __name__=='__main__':
|
||||
support.use_resources = ['network']
|
||||
unittest.main()
|
||||
|
|
|
@ -10,15 +10,9 @@ support.requires('gui')
|
|||
|
||||
from tkinter.test import runtktests
|
||||
|
||||
def test_main(enable_gui=False):
|
||||
if enable_gui:
|
||||
if support.use_resources is None:
|
||||
support.use_resources = ['gui']
|
||||
elif 'gui' not in support.use_resources:
|
||||
support.use_resources.append('gui')
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(
|
||||
*runtktests.get_tests(text=False, packages=['test_tkinter']))
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_main(enable_gui=True)
|
||||
test_main()
|
||||
|
|
|
@ -22,13 +22,7 @@ except TclError as msg:
|
|||
# assuming ttk is not available
|
||||
raise unittest.SkipTest("ttk not available: %s" % msg)
|
||||
|
||||
def test_main(enable_gui=False):
|
||||
if enable_gui:
|
||||
if support.use_resources is None:
|
||||
support.use_resources = ['gui']
|
||||
elif 'gui' not in support.use_resources:
|
||||
support.use_resources.append('gui')
|
||||
|
||||
def test_main():
|
||||
try:
|
||||
support.run_unittest(
|
||||
*runtktests.get_tests(text=False, packages=['test_ttk']))
|
||||
|
@ -36,4 +30,4 @@ def test_main(enable_gui=False):
|
|||
get_tk_root().destroy()
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_main(enable_gui=True)
|
||||
test_main()
|
||||
|
|
|
@ -68,5 +68,4 @@ def get_tests(text=True, gui=True, packages=None):
|
|||
yield test
|
||||
|
||||
if __name__ == "__main__":
|
||||
test.support.use_resources = ['gui']
|
||||
test.support.run_unittest(*get_tests())
|
||||
|
|
|
@ -531,6 +531,9 @@ Documentation
|
|||
Tests
|
||||
-----
|
||||
|
||||
- Issue #18492: All resources are now allowed when tests are not run by
|
||||
regrtest.py.
|
||||
|
||||
- Issue #21634: Fix pystone micro-benchmark: use floor division instead of true
|
||||
division to benchmark integers instead of floating point numbers. Set pystone
|
||||
version to 1.2. Patch written by Lennart Regebro.
|
||||
|
|
Loading…
Reference in New Issue