From 54274ad96aa033b9f3744dce395d08047467cca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Araujo?= Date: Thu, 3 Feb 2011 00:12:18 +0000 Subject: [PATCH] Merged revisions 86236,86240,86332,86340,87271,87273,87447 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To comply with the 2.x doc style, the methods in trace.rst use brackets around optional arguments. The rest is a mostly straight merge, modulo support changed to test_support and use of the old super call style in test_tuple. ........ r86236 | eric.araujo | 2010-11-06 03:44:43 +0100 (sam., 06 nov. 2010) | 2 lines Make sure each test can be run standalone (./python Lib/distutils/tests/x.py) ........ r86240 | eric.araujo | 2010-11-06 05:11:59 +0100 (sam., 06 nov. 2010) | 2 lines Prevent ResourceWarnings in test_gettext ........ r86332 | eric.araujo | 2010-11-08 19:15:17 +0100 (lun., 08 nov. 2010) | 4 lines Add missing NEWS entry for a fix committed by Senthil. All recent modifications to distutils should now be covered in NEWS. ........ r86340 | eric.araujo | 2010-11-08 22:48:23 +0100 (lun., 08 nov. 2010) | 2 lines This was actually fixed for the previous alpha. ........ r87271 | eric.araujo | 2010-12-15 20:09:58 +0100 (mer., 15 déc. 2010) | 2 lines Improve trace documentation (#9264). Patch by Eli Bendersky. ........ r87273 | eric.araujo | 2010-12-15 20:30:15 +0100 (mer., 15 déc. 2010) | 2 lines Use nested method directives, rewrap long lines, fix whitespace. ........ r87447 | eric.araujo | 2010-12-23 20:13:05 +0100 (jeu., 23 déc. 2010) | 2 lines Fix typo in superclass method name ........ --- Doc/library/trace.rst | 190 +++++++++++++------ Lib/distutils/tests/__init__.py | 5 +- Lib/distutils/tests/test_archive_util.py | 4 +- Lib/distutils/tests/test_bdist_msi.py | 2 +- Lib/distutils/tests/test_build.py | 3 +- Lib/distutils/tests/test_build_clib.py | 4 +- Lib/distutils/tests/test_build_py.py | 3 +- Lib/distutils/tests/test_build_scripts.py | 3 +- Lib/distutils/tests/test_check.py | 3 +- Lib/distutils/tests/test_clean.py | 3 +- Lib/distutils/tests/test_cmd.py | 2 +- Lib/distutils/tests/test_config.py | 3 +- Lib/distutils/tests/test_config_cmd.py | 3 +- Lib/distutils/tests/test_core.py | 4 +- Lib/distutils/tests/test_dep_util.py | 3 +- Lib/distutils/tests/test_dir_util.py | 3 +- Lib/distutils/tests/test_dist.py | 4 +- Lib/distutils/tests/test_file_util.py | 3 +- Lib/distutils/tests/test_filelist.py | 4 +- Lib/distutils/tests/test_install.py | 4 +- Lib/distutils/tests/test_install_data.py | 3 +- Lib/distutils/tests/test_install_headers.py | 3 +- Lib/distutils/tests/test_install_lib.py | 3 +- Lib/distutils/tests/test_install_scripts.py | 3 +- Lib/distutils/tests/test_msvc9compiler.py | 3 +- Lib/distutils/tests/test_register.py | 4 +- Lib/distutils/tests/test_sdist.py | 8 +- Lib/distutils/tests/test_spawn.py | 4 +- Lib/distutils/tests/test_text_file.py | 3 +- Lib/distutils/tests/test_unixccompiler.py | 3 +- Lib/distutils/tests/test_upload.py | 7 +- Lib/distutils/tests/test_util.py | 3 +- Lib/distutils/tests/test_version.py | 3 +- Lib/distutils/tests/test_versionpredicate.py | 4 + Lib/test/test_gettext.py | 36 ++-- Lib/test/test_tuple.py | 2 +- Misc/NEWS | 4 + 37 files changed, 221 insertions(+), 128 deletions(-) diff --git a/Doc/library/trace.rst b/Doc/library/trace.rst index 1bc37fd00d9..2e9d2b4d861 100644 --- a/Doc/library/trace.rst +++ b/Doc/library/trace.rst @@ -18,103 +18,177 @@ or from the command line. .. _trace-cli: -Command Line Usage +Command-Line Usage ------------------ The :mod:`trace` module can be invoked from the command line. It can be as simple as :: - python -m trace --count somefile.py ... + python -m trace --count -C . somefile.py ... -The above will generate annotated listings of all Python modules imported during -the execution of :file:`somefile.py`. +The above will execute :file:`somefile.py` and generate annotated listings of +all Python modules imported during the execution into the current directory. -The following command-line arguments are supported: +.. program:: trace + +.. cmdoption:: --help + + Display usage and exit. + +.. cmdoption:: --version + + Display the version of the module and exit. + +Main options +^^^^^^^^^^^^ + +At least one of the following options must be specified when invoking +:mod:`trace`. The :option:`--listfuncs <-l>` option is mutually exclusive with +the :option:`--trace <-t>` and :option:`--counts <-c>` options . When +:option:`--listfuncs <-l>` is provided, neither :option:`--counts <-c>` nor +:option:`--trace <-t>` are accepted, and vice versa. + +.. program:: trace + +.. cmdoption:: -c, --count + + Produce a set of annotated listing files upon program completion that shows + how many times each statement was executed. See also + :option:`--coverdir <-C>`, :option:`--file <-f>` and + :option:`--no-report <-R>` below. + +.. cmdoption:: -t, --trace -:option:`--trace`, :option:`-t` Display lines as they are executed. -:option:`--count`, :option:`-c` - Produce a set of annotated listing files upon program completion that shows how - many times each statement was executed. +.. cmdoption:: -l, --listfuncs + + Display the functions executed by running the program. + +.. cmdoption:: -r, --report -:option:`--report`, :option:`-r` Produce an annotated list from an earlier program run that used the - :option:`--count` and :option:`--file` arguments. + :option:`--count <-c>` and :option:`--file <-f>` option. This does not + execute any code. -:option:`--no-report`, :option:`-R` - Do not generate annotated listings. This is useful if you intend to make - several runs with :option:`--count` then produce a single set of annotated - listings at the end. +.. cmdoption:: -T, --trackcalls -:option:`--listfuncs`, :option:`-l` - List the functions executed by running the program. + Display the calling relationships exposed by running the program. -:option:`--trackcalls`, :option:`-T` - Generate calling relationships exposed by running the program. +Modifiers +^^^^^^^^^ -:option:`--file`, :option:`-f` - Name a file containing (or to contain) counts. +.. program:: trace -:option:`--coverdir`, :option:`-C` - Name a directory in which to save annotated listing files. +.. cmdoption:: -f, --file= + + Name of a file to accumulate counts over several tracing runs. Should be + used with the :option:`--count <-c>` option. + +.. cmdoption:: -C, --coverdir= + + Directory where the report files go. The coverage report for + ``package.module`` is written to file :file:`{dir}/{package}/{module}.cover`. + +.. cmdoption:: -m, --missing -:option:`--missing`, :option:`-m` When generating annotated listings, mark lines which were not executed with - '``>>>>>>``'. + ``>>>>>>``. -:option:`--summary`, :option:`-s` - When using :option:`--count` or :option:`--report`, write a brief summary to - stdout for each file processed. +.. cmdoption:: -s, --summary -:option:`--ignore-module` - Accepts comma separated list of module names. Ignore each of the named - module and its submodules (if it is a package). May be given - multiple times. + When using :option:`--count <-c>` or :option:`--report <-r>`, write a brief + summary to stdout for each file processed. -:option:`--ignore-dir` - Ignore all modules and packages in the named directory and subdirectories - (multiple directories can be joined by os.pathsep). May be given multiple - times. +.. cmdoption:: -R, --no-report + Do not generate annotated listings. This is useful if you intend to make + several runs with :option:`--count <-c>`, and then produce a single set of + annotated listings at the end. + +.. cmdoption:: -g, --timing + + Prefix each line with the time since the program started. Only used while + tracing. + +Filters +^^^^^^^ + +These options may be repeated multiple times. + +.. program:: trace + +.. cmdoption:: --ignore-module= + + Ignore each of the given module names and its submodules (if it is a + package). The argument can be a list of names separated by a comma. + +.. cmdoption:: --ignore-dir= + + Ignore all modules and packages in the named directory and subdirectories. + The argument can be a list of directories separated by :data:`os.pathsep`. .. _trace-api: -Programming Interface ---------------------- - +Programmatic Interface +---------------------- .. class:: Trace([count=1[, trace=1[, countfuncs=0[, countcallers=0[, ignoremods=()[, ignoredirs=()[, infile=None[, outfile=None[, timing=False]]]]]]]]]) - Create an object to trace execution of a single statement or expression. All - parameters are optional. *count* enables counting of line numbers. *trace* - enables line execution tracing. *countfuncs* enables listing of the functions - called during the run. *countcallers* enables call relationship tracking. - *ignoremods* is a list of modules or packages to ignore. *ignoredirs* is a list - of directories whose modules or packages should be ignored. *infile* is the - file from which to read stored count information. *outfile* is a file in which - to write updated count information. *timing* enables a timestamp relative - to when tracing was started to be displayed. + Create an object to trace execution of a single statement or expression. All + parameters are optional. *count* enables counting of line numbers. *trace* + enables line execution tracing. *countfuncs* enables listing of the + functions called during the run. *countcallers* enables call relationship + tracking. *ignoremods* is a list of modules or packages to ignore. + *ignoredirs* is a list of directories whose modules or packages should be + ignored. *infile* is the name of the file from which to read stored count + information. *outfile* is the name of the file in which to write updated + count information. *timing* enables a timestamp relative to when tracing was + started to be displayed. + .. method:: run(cmd) -.. method:: Trace.run(cmd) + Execute the command and gather statistics from the execution with + the current tracing parameters. *cmd* must be a string or code object, + suitable for passing into :func:`exec`. - Run *cmd* under control of the Trace object with the current tracing parameters. + .. method:: runctx(cmd[, globals=None[, locals=None]]) + Execute the command and gather statistics from the execution with the + current tracing parameters, in the defined global and local + environments. If not defined, *globals* and *locals* default to empty + dictionaries. -.. method:: Trace.runctx(cmd[, globals=None[, locals=None]]) + .. method:: runfunc(func, *args, **kwds) - Run *cmd* under control of the Trace object with the current tracing parameters - in the defined global and local environments. If not defined, *globals* and - *locals* default to empty dictionaries. + Call *func* with the given arguments under control of the :class:`Trace` + object with the current tracing parameters. + .. method:: results() -.. method:: Trace.runfunc(func, *args, **kwds) + Return a :class:`CoverageResults` object that contains the cumulative + results of all previous calls to ``run``, ``runctx`` and ``runfunc`` + for the given :class:`Trace` instance. Does not reset the accumulated + trace results. - Call *func* with the given arguments under control of the :class:`Trace` object - with the current tracing parameters. +.. class:: CoverageResults -This is a simple example showing the use of this module:: + A container for coverage results, created by :meth:`Trace.results`. Should + not be created directly by the user. + + .. method:: update(other) + + Merge in data from another :class:`CoverageResults` object. + + .. method:: write_results([show_missing=True[, summary=False[, coverdir=None]]]) + + Write coverage results. Set *show_missing* to show lines that had no + hits. Set *summary* to include in the output the coverage summary per + module. *coverdir* specifies the directory into which the coverage + result files will be output. If ``None``, the results for each source + file are placed in its directory. + +A simple example demonstrating the use of the programmatic interface:: import sys import trace diff --git a/Lib/distutils/tests/__init__.py b/Lib/distutils/tests/__init__.py index 7bdb912463c..697ff840456 100644 --- a/Lib/distutils/tests/__init__.py +++ b/Lib/distutils/tests/__init__.py @@ -15,9 +15,10 @@ by import rather than matching pre-defined names. import os import sys import unittest +from test.test_support import run_unittest -here = os.path.dirname(__file__) +here = os.path.dirname(__file__) or os.curdir def test_suite(): @@ -32,4 +33,4 @@ def test_suite(): if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py index bab91577f2a..1f7106f84fe 100644 --- a/Lib/distutils/tests/test_archive_util.py +++ b/Lib/distutils/tests/test_archive_util.py @@ -12,7 +12,7 @@ from distutils.archive_util import (check_archive_formats, make_tarball, ARCHIVE_FORMATS) from distutils.spawn import find_executable, spawn from distutils.tests import support -from test.test_support import check_warnings +from test.test_support import check_warnings, run_unittest try: import grp @@ -281,4 +281,4 @@ def test_suite(): return unittest.makeSuite(ArchiveUtilTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_bdist_msi.py b/Lib/distutils/tests/test_bdist_msi.py index 7554e9f1707..1c897ab04d6 100644 --- a/Lib/distutils/tests/test_bdist_msi.py +++ b/Lib/distutils/tests/test_bdist_msi.py @@ -11,7 +11,7 @@ class BDistMSITestCase(support.TempdirManager, support.LoggingSilencer, unittest.TestCase): - def test_minial(self): + def test_minimal(self): # minimal test XXX need more tests from distutils.command.bdist_msi import bdist_msi pkg_pth, dist = self.create_dist() diff --git a/Lib/distutils/tests/test_build.py b/Lib/distutils/tests/test_build.py index 3db570382e7..eeb8d73e14d 100644 --- a/Lib/distutils/tests/test_build.py +++ b/Lib/distutils/tests/test_build.py @@ -2,6 +2,7 @@ import unittest import os import sys +from test.test_support import run_unittest from distutils.command.build import build from distutils.tests import support @@ -51,4 +52,4 @@ def test_suite(): return unittest.makeSuite(BuildTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_build_clib.py b/Lib/distutils/tests/test_build_clib.py index d77912ae080..4f4e2bc7c6b 100644 --- a/Lib/distutils/tests/test_build_clib.py +++ b/Lib/distutils/tests/test_build_clib.py @@ -3,6 +3,8 @@ import unittest import os import sys +from test.test_support import run_unittest + from distutils.command.build_clib import build_clib from distutils.errors import DistutilsSetupError from distutils.tests import support @@ -140,4 +142,4 @@ def test_suite(): return unittest.makeSuite(BuildCLibTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py index 03517392fbe..937fa0ce90c 100644 --- a/Lib/distutils/tests/test_build_py.py +++ b/Lib/distutils/tests/test_build_py.py @@ -10,6 +10,7 @@ from distutils.core import Distribution from distutils.errors import DistutilsFileError from distutils.tests import support +from test.test_support import run_unittest class BuildPyTestCase(support.TempdirManager, @@ -123,4 +124,4 @@ def test_suite(): return unittest.makeSuite(BuildPyTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_build_scripts.py b/Lib/distutils/tests/test_build_scripts.py index df89cdec25e..4da93cc1405 100644 --- a/Lib/distutils/tests/test_build_scripts.py +++ b/Lib/distutils/tests/test_build_scripts.py @@ -8,6 +8,7 @@ from distutils.core import Distribution import sysconfig from distutils.tests import support +from test.test_support import run_unittest class BuildScriptsTestCase(support.TempdirManager, @@ -108,4 +109,4 @@ def test_suite(): return unittest.makeSuite(BuildScriptsTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_check.py b/Lib/distutils/tests/test_check.py index 7c56c043399..4ea83dcb794 100644 --- a/Lib/distutils/tests/test_check.py +++ b/Lib/distutils/tests/test_check.py @@ -1,5 +1,6 @@ """Tests for distutils.command.check.""" import unittest +from test.test_support import run_unittest from distutils.command.check import check, HAS_DOCUTILS from distutils.tests import support @@ -95,4 +96,4 @@ def test_suite(): return unittest.makeSuite(CheckTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_clean.py b/Lib/distutils/tests/test_clean.py index dbc4ee2a186..2d1610da7c5 100644 --- a/Lib/distutils/tests/test_clean.py +++ b/Lib/distutils/tests/test_clean.py @@ -6,6 +6,7 @@ import getpass from distutils.command.clean import clean from distutils.tests import support +from test.test_support import run_unittest class cleanTestCase(support.TempdirManager, support.LoggingSilencer, @@ -47,4 +48,4 @@ def test_suite(): return unittest.makeSuite(cleanTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_cmd.py b/Lib/distutils/tests/test_cmd.py index 97cdb8ad699..e074099609a 100644 --- a/Lib/distutils/tests/test_cmd.py +++ b/Lib/distutils/tests/test_cmd.py @@ -99,7 +99,7 @@ class CommandTestCase(unittest.TestCase): def test_ensure_dirname(self): cmd = self.cmd - cmd.option1 = os.path.dirname(__file__) + cmd.option1 = os.path.dirname(__file__) or os.curdir cmd.ensure_dirname('option1') cmd.option2 = 'xxx' self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2') diff --git a/Lib/distutils/tests/test_config.py b/Lib/distutils/tests/test_config.py index 8d71234d6ee..cfd096ebc23 100644 --- a/Lib/distutils/tests/test_config.py +++ b/Lib/distutils/tests/test_config.py @@ -11,6 +11,7 @@ from distutils.log import set_threshold from distutils.log import WARN from distutils.tests import support +from test.test_support import run_unittest PYPIRC = """\ [distutils] @@ -119,4 +120,4 @@ def test_suite(): return unittest.makeSuite(PyPIRCCommandTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_config_cmd.py b/Lib/distutils/tests/test_config_cmd.py index fcb798e73ba..a36a1d5b492 100644 --- a/Lib/distutils/tests/test_config_cmd.py +++ b/Lib/distutils/tests/test_config_cmd.py @@ -2,6 +2,7 @@ import unittest import os import sys +from test.test_support import run_unittest from distutils.command.config import dump_file, config from distutils.tests import support @@ -86,4 +87,4 @@ def test_suite(): return unittest.makeSuite(ConfigTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_core.py b/Lib/distutils/tests/test_core.py index 74d1f3b269b..0d979bcde9e 100644 --- a/Lib/distutils/tests/test_core.py +++ b/Lib/distutils/tests/test_core.py @@ -6,7 +6,7 @@ import os import shutil import sys import test.test_support -from test.test_support import captured_stdout +from test.test_support import captured_stdout, run_unittest import unittest from distutils.tests import support @@ -105,4 +105,4 @@ def test_suite(): return unittest.makeSuite(CoreTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_dep_util.py b/Lib/distutils/tests/test_dep_util.py index 35508196810..751043432ed 100644 --- a/Lib/distutils/tests/test_dep_util.py +++ b/Lib/distutils/tests/test_dep_util.py @@ -6,6 +6,7 @@ import time from distutils.dep_util import newer, newer_pairwise, newer_group from distutils.errors import DistutilsFileError from distutils.tests import support +from test.test_support import run_unittest class DepUtilTestCase(support.TempdirManager, unittest.TestCase): @@ -77,4 +78,4 @@ def test_suite(): return unittest.makeSuite(DepUtilTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_dir_util.py b/Lib/distutils/tests/test_dir_util.py index 84a0ec6cfcb..693f77cf646 100644 --- a/Lib/distutils/tests/test_dir_util.py +++ b/Lib/distutils/tests/test_dir_util.py @@ -10,6 +10,7 @@ from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree, from distutils import log from distutils.tests import support +from test.test_support import run_unittest class DirUtilTestCase(support.TempdirManager, unittest.TestCase): @@ -112,4 +113,4 @@ def test_suite(): return unittest.makeSuite(DirUtilTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py index 8ab7e9fc310..ba60638179e 100644 --- a/Lib/distutils/tests/test_dist.py +++ b/Lib/distutils/tests/test_dist.py @@ -11,7 +11,7 @@ import textwrap from distutils.dist import Distribution, fix_help_options, DistributionMetadata from distutils.cmd import Command import distutils.dist -from test.test_support import TESTFN, captured_stdout +from test.test_support import TESTFN, captured_stdout, run_unittest from distutils.tests import support class test_dist(Command): @@ -433,4 +433,4 @@ def test_suite(): return suite if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_file_util.py b/Lib/distutils/tests/test_file_util.py index dbc62839817..7dbcf52c68c 100644 --- a/Lib/distutils/tests/test_file_util.py +++ b/Lib/distutils/tests/test_file_util.py @@ -6,6 +6,7 @@ import shutil from distutils.file_util import move_file, write_file, copy_file from distutils import log from distutils.tests import support +from test.test_support import run_unittest class FileUtilTestCase(support.TempdirManager, unittest.TestCase): @@ -77,4 +78,4 @@ def test_suite(): return unittest.makeSuite(FileUtilTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_filelist.py b/Lib/distutils/tests/test_filelist.py index 32c56c75bc8..be11ea5d136 100644 --- a/Lib/distutils/tests/test_filelist.py +++ b/Lib/distutils/tests/test_filelist.py @@ -1,7 +1,7 @@ """Tests for distutils.filelist.""" from os.path import join import unittest -from test.test_support import captured_stdout +from test.test_support import captured_stdout, run_unittest from distutils.filelist import glob_to_re, FileList from distutils import debug @@ -82,4 +82,4 @@ def test_suite(): return unittest.makeSuite(FileListTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py index c834b91b38f..4f976f34e67 100644 --- a/Lib/distutils/tests/test_install.py +++ b/Lib/distutils/tests/test_install.py @@ -3,6 +3,8 @@ import os import unittest +from test.test_support import run_unittest + from distutils.command.install import install from distutils.core import Distribution @@ -52,4 +54,4 @@ def test_suite(): return unittest.makeSuite(InstallTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_install_data.py b/Lib/distutils/tests/test_install_data.py index 86db4a12c57..477569444fb 100644 --- a/Lib/distutils/tests/test_install_data.py +++ b/Lib/distutils/tests/test_install_data.py @@ -6,6 +6,7 @@ import getpass from distutils.command.install_data import install_data from distutils.tests import support +from test.test_support import run_unittest class InstallDataTestCase(support.TempdirManager, support.LoggingSilencer, @@ -73,4 +74,4 @@ def test_suite(): return unittest.makeSuite(InstallDataTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_install_headers.py b/Lib/distutils/tests/test_install_headers.py index aa8a4e6014f..b37224b93d2 100644 --- a/Lib/distutils/tests/test_install_headers.py +++ b/Lib/distutils/tests/test_install_headers.py @@ -6,6 +6,7 @@ import getpass from distutils.command.install_headers import install_headers from distutils.tests import support +from test.test_support import run_unittest class InstallHeadersTestCase(support.TempdirManager, support.LoggingSilencer, @@ -37,4 +38,4 @@ def test_suite(): return unittest.makeSuite(InstallHeadersTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_install_lib.py b/Lib/distutils/tests/test_install_lib.py index 754ea636a51..4d863089c08 100644 --- a/Lib/distutils/tests/test_install_lib.py +++ b/Lib/distutils/tests/test_install_lib.py @@ -7,6 +7,7 @@ from distutils.command.install_lib import install_lib from distutils.extension import Extension from distutils.tests import support from distutils.errors import DistutilsOptionError +from test.test_support import run_unittest class InstallLibTestCase(support.TempdirManager, support.LoggingSilencer, @@ -103,4 +104,4 @@ def test_suite(): return unittest.makeSuite(InstallLibTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_install_scripts.py b/Lib/distutils/tests/test_install_scripts.py index 08360d297b8..46085458bf1 100644 --- a/Lib/distutils/tests/test_install_scripts.py +++ b/Lib/distutils/tests/test_install_scripts.py @@ -7,6 +7,7 @@ from distutils.command.install_scripts import install_scripts from distutils.core import Distribution from distutils.tests import support +from test.test_support import run_unittest class InstallScriptsTestCase(support.TempdirManager, @@ -78,4 +79,4 @@ def test_suite(): return unittest.makeSuite(InstallScriptsTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_msvc9compiler.py b/Lib/distutils/tests/test_msvc9compiler.py index b8e2209482e..e155dbfea3e 100644 --- a/Lib/distutils/tests/test_msvc9compiler.py +++ b/Lib/distutils/tests/test_msvc9compiler.py @@ -5,6 +5,7 @@ import os from distutils.errors import DistutilsPlatformError from distutils.tests import support +from test.test_support import run_unittest _MANIFEST = """\ @@ -137,4 +138,4 @@ def test_suite(): return unittest.makeSuite(msvc9compilerTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_register.py b/Lib/distutils/tests/test_register.py index 915427b7d97..dd60f8c804e 100644 --- a/Lib/distutils/tests/test_register.py +++ b/Lib/distutils/tests/test_register.py @@ -7,7 +7,7 @@ import getpass import urllib2 import warnings -from test.test_support import check_warnings +from test.test_support import check_warnings, run_unittest from distutils.command import register as register_module from distutils.command.register import register @@ -258,4 +258,4 @@ def test_suite(): return unittest.makeSuite(RegisterTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py index b9d86bb02e4..ab8c3d917bd 100644 --- a/Lib/distutils/tests/test_sdist.py +++ b/Lib/distutils/tests/test_sdist.py @@ -24,11 +24,9 @@ import sys import tempfile import warnings -from test.test_support import check_warnings -from test.test_support import captured_stdout +from test.test_support import captured_stdout, check_warnings, run_unittest -from distutils.command.sdist import sdist -from distutils.command.sdist import show_formats +from distutils.command.sdist import sdist, show_formats from distutils.core import Distribution from distutils.tests.test_config import PyPIRCCommandTestCase from distutils.errors import DistutilsExecError, DistutilsOptionError @@ -426,4 +424,4 @@ def test_suite(): return unittest.makeSuite(SDistTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_spawn.py b/Lib/distutils/tests/test_spawn.py index 6caf039031b..defa54d87f1 100644 --- a/Lib/distutils/tests/test_spawn.py +++ b/Lib/distutils/tests/test_spawn.py @@ -2,7 +2,7 @@ import unittest import os import time -from test.test_support import captured_stdout +from test.test_support import captured_stdout, run_unittest from distutils.spawn import _nt_quote_args from distutils.spawn import spawn, find_executable @@ -57,4 +57,4 @@ def test_suite(): return unittest.makeSuite(SpawnTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_text_file.py b/Lib/distutils/tests/test_text_file.py index f1e32b6cc64..ce19cd4dcde 100644 --- a/Lib/distutils/tests/test_text_file.py +++ b/Lib/distutils/tests/test_text_file.py @@ -3,6 +3,7 @@ import os import unittest from distutils.text_file import TextFile from distutils.tests import support +from test.test_support import run_unittest TEST_DATA = """# test file @@ -103,4 +104,4 @@ def test_suite(): return unittest.makeSuite(TextFileTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_unixccompiler.py b/Lib/distutils/tests/test_unixccompiler.py index 3f233e28239..40c908a24d0 100644 --- a/Lib/distutils/tests/test_unixccompiler.py +++ b/Lib/distutils/tests/test_unixccompiler.py @@ -1,6 +1,7 @@ """Tests for distutils.unixccompiler.""" import sys import unittest +from test.test_support import run_unittest from distutils import sysconfig from distutils.unixccompiler import UnixCCompiler @@ -126,4 +127,4 @@ def test_suite(): return unittest.makeSuite(UnixCCompilerTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py index f45ee41e8cd..99111999d87 100644 --- a/Lib/distutils/tests/test_upload.py +++ b/Lib/distutils/tests/test_upload.py @@ -1,14 +1,13 @@ -"""Tests for distutils.command.upload.""" # -*- encoding: utf8 -*- -import sys +"""Tests for distutils.command.upload.""" import os import unittest +from test.test_support import run_unittest from distutils.command import upload as upload_mod from distutils.command.upload import upload from distutils.core import Distribution -from distutils.tests import support from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase PYPIRC_LONG_PASSWORD = """\ @@ -129,4 +128,4 @@ def test_suite(): return unittest.makeSuite(uploadTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py index 981ad000da5..67cd4cc7e61 100644 --- a/Lib/distutils/tests/test_util.py +++ b/Lib/distutils/tests/test_util.py @@ -1,6 +1,7 @@ """Tests for distutils.util.""" import sys import unittest +from test.test_support import run_unittest from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError from distutils.util import byte_compile @@ -21,4 +22,4 @@ def test_suite(): return unittest.makeSuite(UtilTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_version.py b/Lib/distutils/tests/test_version.py index 1d9fbc7985f..2189956429f 100644 --- a/Lib/distutils/tests/test_version.py +++ b/Lib/distutils/tests/test_version.py @@ -2,6 +2,7 @@ import unittest from distutils.version import LooseVersion from distutils.version import StrictVersion +from test.test_support import run_unittest class VersionTestCase(unittest.TestCase): @@ -67,4 +68,4 @@ def test_suite(): return unittest.makeSuite(VersionTestCase) if __name__ == "__main__": - unittest.main(defaultTest="test_suite") + run_unittest(test_suite()) diff --git a/Lib/distutils/tests/test_versionpredicate.py b/Lib/distutils/tests/test_versionpredicate.py index 8a60dbe8060..1d6c8d5a98d 100644 --- a/Lib/distutils/tests/test_versionpredicate.py +++ b/Lib/distutils/tests/test_versionpredicate.py @@ -4,6 +4,10 @@ import distutils.versionpredicate import doctest +from test.test_support import run_unittest def test_suite(): return doctest.DocTestSuite(distutils.versionpredicate) + +if __name__ == '__main__': + run_unittest(test_suite()) diff --git a/Lib/test/test_gettext.py b/Lib/test/test_gettext.py index 65b395b4604..f0369543e0f 100644 --- a/Lib/test/test_gettext.py +++ b/Lib/test/test_gettext.py @@ -64,15 +64,13 @@ class GettextBaseTest(unittest.TestCase): def setUp(self): if not os.path.isdir(LOCALEDIR): os.makedirs(LOCALEDIR) - fp = open(MOFILE, 'wb') - fp.write(base64.decodestring(GNU_MO_DATA)) - fp.close() - fp = open(UMOFILE, 'wb') - fp.write(base64.decodestring(UMO_DATA)) - fp.close() - fp = open(MMOFILE, 'wb') - fp.write(base64.decodestring(MMO_DATA)) - fp.close() + with open(MOFILE, 'wb') as fp: + fp.write(base64.decodestring(GNU_MO_DATA)) + with open(UMOFILE, 'wb') as fp: + fp.write(base64.decodestring(UMO_DATA)) + with open(MMOFILE, 'wb') as fp: + fp.write(base64.decodestring(MMO_DATA)) + self.env = test_support.EnvironmentVarGuard() self.env['LANGUAGE'] = 'xx' gettext._translations.clear() @@ -135,9 +133,8 @@ trggrkg zrffntr pngnybt yvoenel.''') def test_the_alternative_interface(self): eq = self.assertEqual # test the alternative interface - fp = open(self.mofile, 'rb') - t = gettext.GNUTranslations(fp) - fp.close() + with open(self.mofile, 'rb') as fp: + t = gettext.GNUTranslations(fp) # Install the translation object t.install() eq(_('nudge nudge'), 'wink wink') @@ -227,9 +224,8 @@ class PluralFormsTestCase(GettextBaseTest): def test_plural_forms2(self): eq = self.assertEqual - fp = open(self.mofile, 'rb') - t = gettext.GNUTranslations(fp) - fp.close() + with open(self.mofile, 'rb') as fp: + t = gettext.GNUTranslations(fp) x = t.ngettext('There is %s file', 'There are %s files', 1) eq(x, 'Hay %s fichero') x = t.ngettext('There is %s file', 'There are %s files', 2) @@ -299,11 +295,8 @@ class PluralFormsTestCase(GettextBaseTest): class UnicodeTranslationsTest(GettextBaseTest): def setUp(self): GettextBaseTest.setUp(self) - fp = open(UMOFILE, 'rb') - try: + with open(UMOFILE, 'rb') as fp: self.t = gettext.GNUTranslations(fp) - finally: - fp.close() self._ = self.t.ugettext def test_unicode_msgid(self): @@ -319,15 +312,12 @@ class UnicodeTranslationsTest(GettextBaseTest): class WeirdMetadataTest(GettextBaseTest): def setUp(self): GettextBaseTest.setUp(self) - fp = open(MMOFILE, 'rb') - try: + with open(MMOFILE, 'rb') as fp: try: self.t = gettext.GNUTranslations(fp) except: self.tearDown() raise - finally: - fp.close() def test_weird_metadata(self): info = self.t.info() diff --git a/Lib/test/test_tuple.py b/Lib/test/test_tuple.py index 4d2137f6556..0c308f0e06c 100644 --- a/Lib/test/test_tuple.py +++ b/Lib/test/test_tuple.py @@ -6,7 +6,7 @@ class TupleTest(seq_tests.CommonTest): type2test = tuple def test_constructors(self): - super(TupleTest, self).test_len() + super(TupleTest, self).test_constructors() # calling built-in types without argument must return empty self.assertEqual(tuple(), ()) t0_3 = (0, 1, 2, 3) diff --git a/Misc/NEWS b/Misc/NEWS index 8c52b0947aa..0808f071d26 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -213,6 +213,10 @@ What's New in Python 2.7.1? Library ------- +- Issue #2236: distutils' mkpath ignored the mode parameter. + +- Fix typo in one sdist option (medata-check). + - Issue #10323: itertools.islice() now consumes the minimum number of inputs before stopping. Formerly, the final state of the underlying iterator was undefined.