mirror of
https://github.com/python/cpython.git
synced 2025-08-02 08:02:56 +00:00
Merged revisions 62873,62887,62892-62896,62904 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r62873 | raymond.hettinger | 2008-05-08 12:18:13 -0500 (Thu, 08 May 2008) | 1 line Issue 2778. Document the temporary frozenset swap in __contains__(), remove(), and discard(). ........ r62887 | brett.cannon | 2008-05-08 14:50:51 -0500 (Thu, 08 May 2008) | 5 lines Make test.test_support.catch_warning() take an argument specifying if any triggered warnings should be captured. This allows the context manager to be used to just prevent the internal state of the 'warnings' framework and thus allow triggered warnings to be displayed. ........ r62892 | brett.cannon | 2008-05-08 15:20:24 -0500 (Thu, 08 May 2008) | 4 lines Fix a bug introduced by the addition of the 'record' argument to test.test_support.catch_warning() where showwarning() was not being set properly. ........ r62893 | brett.cannon | 2008-05-08 15:20:54 -0500 (Thu, 08 May 2008) | 2 lines Document the 'record' argument for test.test_support.catch_warning(). ........ r62894 | brett.cannon | 2008-05-08 15:23:06 -0500 (Thu, 08 May 2008) | 4 lines Fix sys.flags to properly expose bytes_warning. Closes issue #2790. ........ r62895 | brett.cannon | 2008-05-08 15:23:54 -0500 (Thu, 08 May 2008) | 2 lines Add a missing entry on the fix for issue #2790. ........ r62896 | brett.cannon | 2008-05-08 15:24:43 -0500 (Thu, 08 May 2008) | 2 lines Add test.test_support.catch_warning()'s new argument. ........ r62904 | benjamin.peterson | 2008-05-08 17:09:54 -0500 (Thu, 08 May 2008) | 2 lines Replace instances of os.path.walk with os.walk ........
This commit is contained in:
parent
cf7d175ec4
commit
699adb9cd8
6 changed files with 48 additions and 29 deletions
|
@ -1539,7 +1539,7 @@ proper superset of the second set (is a superset, but is not equal).
|
|||
|
||||
Instances of :class:`set` are compared to instances of :class:`frozenset` based
|
||||
on their members. For example, ``set('abc') == frozenset('abc')`` returns
|
||||
``True``.
|
||||
``True`` and so does ``set('abc') in set([frozenset('abc')])``.
|
||||
|
||||
The subset and equality comparisons do not generalize to a complete ordering
|
||||
function. For example, any two disjoint sets are not equal and are not subsets
|
||||
|
@ -1578,18 +1578,18 @@ apply to immutable instances of :class:`frozenset`:
|
|||
|
||||
Update the set, keeping only elements found in either set, but not in both.
|
||||
|
||||
.. method:: set.add(el)
|
||||
.. method:: set.add(elem)
|
||||
|
||||
Add element *el* to the set.
|
||||
Add element *elem* to the set.
|
||||
|
||||
.. method:: set.remove(el)
|
||||
.. method:: set.remove(elem)
|
||||
|
||||
Remove element *el* from the set. Raises :exc:`KeyError` if *el* is not
|
||||
Remove element *elem* from the set. Raises :exc:`KeyError` if *elem* is not
|
||||
contained in the set.
|
||||
|
||||
.. method:: set.discard(el)
|
||||
.. method:: set.discard(elem)
|
||||
|
||||
Remove element *el* from the set if it is present.
|
||||
Remove element *elem* from the set if it is present.
|
||||
|
||||
.. method:: set.pop()
|
||||
|
||||
|
@ -1606,6 +1606,12 @@ Note, the non-operator versions of the :meth:`update`,
|
|||
:meth:`symmetric_difference_update` methods will accept any iterable as an
|
||||
argument.
|
||||
|
||||
Note, the *elem* argument to the :meth:`__contains__`, :meth:`remove`, and
|
||||
:meth:`discard` methods may be a set. To support searching for an equivalent
|
||||
frozenset, the *elem* set is temporarily mutated during the search and then
|
||||
restored. During the search, the *elem* set should not be read or mutated
|
||||
since it does not have a meaningful value.
|
||||
|
||||
|
||||
.. _typesmapping:
|
||||
|
||||
|
|
|
@ -283,13 +283,15 @@ The :mod:`test.test_support` module defines the following functions:
|
|||
This will run all tests defined in the named module.
|
||||
|
||||
|
||||
.. function:: catch_warning()
|
||||
.. function:: catch_warning(record=True)
|
||||
|
||||
This is a context manager that guards the warnings filter from being
|
||||
Return a context manager that guards the warnings filter from being
|
||||
permanently changed and records the data of the last warning that has been
|
||||
issued.
|
||||
issued. The ``record`` argument specifies whether any raised warnings are
|
||||
captured by the object returned by :func:`warnings.catch_warning` or allowed
|
||||
to propagate as normal.
|
||||
|
||||
Use like this::
|
||||
The context manager is typically used like this::
|
||||
|
||||
with catch_warning() as w:
|
||||
warnings.warn("foo")
|
||||
|
|
|
@ -92,18 +92,16 @@ def make_zipfile (base_name, base_dir, verbose=0, dry_run=0):
|
|||
log.info("creating '%s' and adding '%s' to it",
|
||||
zip_filename, base_dir)
|
||||
|
||||
def visit (z, dirname, names):
|
||||
for name in names:
|
||||
path = os.path.normpath(os.path.join(dirname, name))
|
||||
if os.path.isfile(path):
|
||||
z.write(path, path)
|
||||
log.info("adding '%s'" % path)
|
||||
|
||||
if not dry_run:
|
||||
z = zipfile.ZipFile(zip_filename, "w",
|
||||
compression=zipfile.ZIP_DEFLATED)
|
||||
|
||||
os.path.walk(base_dir, visit, z)
|
||||
for dirpath, dirnames, filenames in os.walk(base_dir):
|
||||
for name in filenames:
|
||||
path = os.path.normpath(os.path.join(dirpath, name))
|
||||
if os.path.isfile(path):
|
||||
z.write(path, path)
|
||||
log.info("adding '%s'" % path)
|
||||
z.close()
|
||||
|
||||
return zip_filename
|
||||
|
|
|
@ -197,10 +197,6 @@ def touch(path, text=''):
|
|||
fp.write(text)
|
||||
fp.close()
|
||||
|
||||
def zap(actions, dirname, names):
|
||||
for name in names:
|
||||
actions.append(os.path.join(dirname, name))
|
||||
|
||||
class LongReprTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
longname = 'areallylongpackageandmodulenametotestreprtruncation'
|
||||
|
@ -219,7 +215,9 @@ class LongReprTest(unittest.TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
actions = []
|
||||
os.path.walk(self.pkgname, zap, actions)
|
||||
for dirpath, dirnames, filenames in os.walk(self.pkgname):
|
||||
for name in dirnames + filenames:
|
||||
actions.append(os.path.join(dirpath, name))
|
||||
actions.append(self.pkgname)
|
||||
actions.sort()
|
||||
actions.reverse()
|
||||
|
|
|
@ -37,6 +37,19 @@ class ResourceDenied(TestSkipped):
|
|||
and unexpected skips.
|
||||
"""
|
||||
|
||||
def import_module(name, deprecated=False):
|
||||
"""Import the module to be tested, raising TestSkipped if it is not
|
||||
available."""
|
||||
with catch_warning(record=False):
|
||||
if deprecated:
|
||||
warnings.filterwarnings("ignore", ".+ module", DeprecationWarning)
|
||||
try:
|
||||
module = __import__(name, level=0)
|
||||
except ImportError:
|
||||
raise TestSkipped("No module named " + name)
|
||||
else:
|
||||
return module
|
||||
|
||||
verbose = 1 # Flag set to 0 by regrtest.py
|
||||
use_resources = None # Flag set to [] by regrtest.py
|
||||
max_memuse = 0 # Disable bigmem tests (they will still be run with
|
||||
|
@ -373,7 +386,7 @@ class WarningMessage(object):
|
|||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def catch_warning(module=warnings):
|
||||
def catch_warning(module=warnings, record=True):
|
||||
"""
|
||||
Guard the warnings filter from being permanently changed and record the
|
||||
data of the last warning that has been issued.
|
||||
|
@ -384,12 +397,13 @@ def catch_warning(module=warnings):
|
|||
warnings.warn("foo")
|
||||
assert str(w.message) == "foo"
|
||||
"""
|
||||
warning_obj = WarningMessage()
|
||||
original_filters = module.filters[:]
|
||||
original_showwarning = module.showwarning
|
||||
module.showwarning = warning_obj._showwarning
|
||||
if record:
|
||||
warning_obj = WarningMessage()
|
||||
module.showwarning = warning_obj._showwarning
|
||||
try:
|
||||
yield warning_obj
|
||||
yield warning_obj if record else None
|
||||
finally:
|
||||
module.showwarning = original_showwarning
|
||||
module.filters = original_filters
|
||||
|
|
|
@ -324,7 +324,8 @@ class SysModuleTest(unittest.TestCase):
|
|||
self.failUnless(sys.flags)
|
||||
attrs = ("debug", "division_warning",
|
||||
"inspect", "interactive", "optimize", "dont_write_bytecode",
|
||||
"no_site", "ignore_environment", "tabcheck", "verbose")
|
||||
"no_site", "ignore_environment", "tabcheck", "verbose",
|
||||
"bytes_warning")
|
||||
for attr in attrs:
|
||||
self.assert_(hasattr(sys.flags, attr), attr)
|
||||
self.assertEqual(type(getattr(sys.flags, attr)), int, attr)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue