Merged revisions 86236,86240,86332,86340,87271,87273,87447 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

The missing NEWS entries correspond to changes that were made before 3.1.3, but
I think it’s not usual to edit entries of released versions, so I put them at
the top.

........
  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
........
This commit is contained in:
Éric Araujo 2011-02-02 21:38:37 +00:00
parent 65548873cf
commit b344dd06c8
42 changed files with 231 additions and 135 deletions

View File

@ -13,103 +13,178 @@ 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=<file>
Name of a file to accumulate counts over several tracing runs. Should be
used with the :option:`--count <-c>` option.
.. cmdoption:: -C, --coverdir=<dir>
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=<mod>
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=<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)
.. 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 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.
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.
.. method:: 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`.
.. method:: Trace.run(cmd)
.. method:: runctx(cmd, globals=None, locals=None)
Run *cmd* under control of the Trace object with the current tracing parameters.
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:: runfunc(func, *args, **kwds)
.. method:: Trace.runctx(cmd, globals=None, locals=None)
Call *func* with the given arguments under control of the :class:`Trace`
object with the current tracing parameters.
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.
.. method:: results()
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.
.. method:: Trace.runfunc(func, *args, **kwds)
.. class:: CoverageResults
Call *func* with the given arguments under control of the :class:`Trace` object
with the current tracing parameters.
A container for coverage results, created by :meth:`Trace.results`. Should
not be created directly by the user.
This is a simple example showing the use of this module::
.. 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

View File

@ -15,9 +15,10 @@ by import rather than matching pre-defined names.
import os
import sys
import unittest
from 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())

View File

@ -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.support import check_warnings
from test.support import check_warnings, run_unittest
try:
import zipfile
@ -211,4 +211,4 @@ def test_suite():
return unittest.makeSuite(ArchiveUtilTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -4,6 +4,7 @@ import sys
import os
import tempfile
import shutil
from test.support import run_unittest
from distutils.core import Distribution
from distutils.command.bdist import bdist
@ -40,4 +41,4 @@ def test_suite():
return unittest.makeSuite(BuildTestCase)
if __name__ == '__main__':
test_support.run_unittest(test_suite())
run_unittest(test_suite())

View File

@ -3,6 +3,7 @@
import unittest
import sys
import os
from test.support import run_unittest
from distutils.core import Distribution
from distutils.command.bdist_dumb import bdist_dumb
@ -77,4 +78,4 @@ def test_suite():
return unittest.makeSuite(BuildDumbTestCase)
if __name__ == '__main__':
test_support.run_unittest(test_suite())
run_unittest(test_suite())

View File

@ -5,6 +5,7 @@ import sys
import os
import tempfile
import shutil
from test.support import run_unittest
from distutils.core import Distribution
from distutils.command.bdist_rpm import bdist_rpm
@ -122,4 +123,4 @@ def test_suite():
return unittest.makeSuite(BuildRpmTestCase)
if __name__ == '__main__':
test_support.run_unittest(test_suite())
run_unittest(test_suite())

View File

@ -1,5 +1,6 @@
"""Tests for distutils.command.bdist_wininst."""
import unittest
from test.support import run_unittest
from distutils.command.bdist_wininst import bdist_wininst
from distutils.tests import support
@ -27,4 +28,4 @@ def test_suite():
return unittest.makeSuite(BuildWinInstTestCase)
if __name__ == '__main__':
test_support.run_unittest(test_suite())
run_unittest(test_suite())

View File

@ -3,6 +3,8 @@ import unittest
import os
import sys
from test.support import run_unittest
from distutils.command.build_clib import build_clib
from distutils.errors import DistutilsSetupError
from distutils.tests import support
@ -141,4 +143,4 @@ def test_suite():
return unittest.makeSuite(BuildCLibTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -15,6 +15,7 @@ from distutils.errors import (UnknownFileError, DistutilsSetupError,
import unittest
from test import support
from test.support import run_unittest
# http://bugs.python.org/issue4373
# Don't load the xx module more than once.

View File

@ -10,6 +10,7 @@ from distutils.core import Distribution
from distutils.errors import DistutilsFileError
from distutils.tests import support
from test.support import run_unittest
class BuildPyTestCase(support.TempdirManager,
@ -114,4 +115,4 @@ def test_suite():
return unittest.makeSuite(BuildPyTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -8,6 +8,7 @@ from distutils.core import Distribution
from distutils import sysconfig
from distutils.tests import support
from 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())

View File

@ -1,5 +1,6 @@
"""Tests for distutils.command.check."""
import unittest
from 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())

View File

@ -6,6 +6,7 @@ import getpass
from distutils.command.clean import clean
from distutils.tests import support
from 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())

View File

@ -1,7 +1,7 @@
"""Tests for distutils.cmd."""
import unittest
import os
from test.support import captured_stdout
from test.support import captured_stdout, run_unittest
from distutils.cmd import Command
from distutils.dist import Distribution
@ -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')
@ -124,4 +124,4 @@ def test_suite():
return unittest.makeSuite(CommandTestCase)
if __name__ == '__main__':
test_support.run_unittest(test_suite())
run_unittest(test_suite())

View File

@ -10,6 +10,7 @@ from distutils.log import set_threshold
from distutils.log import WARN
from distutils.tests import support
from test.support import run_unittest
PYPIRC = """\
[distutils]
@ -116,4 +117,4 @@ def test_suite():
return unittest.makeSuite(PyPIRCCommandTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -2,6 +2,7 @@
import unittest
import os
import sys
from 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())

View File

@ -6,7 +6,7 @@ import os
import shutil
import sys
import test.support
from test.support import captured_stdout
from 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())

View File

@ -4,6 +4,7 @@ import sys
import os
from io import BytesIO
import subprocess
from test.support import run_unittest
from distutils import cygwinccompiler
from distutils.cygwinccompiler import (CygwinCCompiler, check_config_h,
@ -151,4 +152,4 @@ def test_suite():
return unittest.makeSuite(CygwinCCompilerTestCase)
if __name__ == '__main__':
test_support.run_unittest(test_suite())
run_unittest(test_suite())

View File

@ -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.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())

View File

@ -10,7 +10,7 @@ import textwrap
from distutils.dist import Distribution, fix_help_options
from distutils.cmd import Command
from test.support import TESTFN, captured_stdout
from test.support import TESTFN, captured_stdout, run_unittest
from distutils.tests import support
@ -326,4 +326,4 @@ def test_suite():
return suite
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -3,7 +3,7 @@ import unittest
import os
import warnings
from test.support import check_warnings
from test.support import check_warnings, run_unittest
from distutils.extension import read_setup_file, Extension
class ExtensionTestCase(unittest.TestCase):
@ -66,4 +66,4 @@ def test_suite():
return unittest.makeSuite(ExtensionTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -6,6 +6,7 @@ import shutil
from distutils.file_util import move_file
from distutils import log
from distutils.tests import support
from test.support import run_unittest
class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
@ -62,4 +63,4 @@ def test_suite():
return unittest.makeSuite(FileUtilTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -2,7 +2,7 @@
import unittest
from distutils.filelist import glob_to_re, FileList
from test.support import captured_stdout
from test.support import captured_stdout, run_unittest
from distutils import debug
class FileListTestCase(unittest.TestCase):
@ -39,4 +39,4 @@ def test_suite():
return unittest.makeSuite(FileListTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -6,7 +6,7 @@ import sys
import unittest
import site
from test.support import captured_stdout
from test.support import captured_stdout, run_unittest
from distutils.command.install import install
from distutils.command import install as install_module
@ -203,4 +203,4 @@ def test_suite():
return unittest.makeSuite(InstallTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -6,6 +6,7 @@ import getpass
from distutils.command.install_data import install_data
from distutils.tests import support
from 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())

View File

@ -6,6 +6,7 @@ import getpass
from distutils.command.install_headers import install_headers
from distutils.tests import support
from 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())

View File

@ -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.support import run_unittest
class InstallLibTestCase(support.TempdirManager,
support.LoggingSilencer,
@ -98,4 +99,4 @@ def test_suite():
return unittest.makeSuite(InstallLibTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -7,6 +7,7 @@ from distutils.command.install_scripts import install_scripts
from distutils.core import Distribution
from distutils.tests import support
from 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())

View File

@ -3,6 +3,7 @@
import sys
import unittest
from tempfile import NamedTemporaryFile
from test.support import run_unittest
from distutils import log
@ -33,4 +34,4 @@ def test_suite():
return unittest.makeSuite(TestLog)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -5,6 +5,7 @@ import os
from distutils.errors import DistutilsPlatformError
from distutils.tests import support
from test.support import run_unittest
_MANIFEST = """\
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@ -137,4 +138,4 @@ def test_suite():
return unittest.makeSuite(msvc9compilerTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -6,7 +6,7 @@ import getpass
import urllib
import warnings
from test.support import check_warnings
from test.support import check_warnings, run_unittest
from distutils.command import register as register_module
from distutils.command.register import register
@ -259,4 +259,4 @@ def test_suite():
return unittest.makeSuite(RegisterTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -8,11 +8,9 @@ import sys
import tempfile
import warnings
from test.support import check_warnings
from test.support import captured_stdout
from 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
@ -356,4 +354,4 @@ def test_suite():
return unittest.makeSuite(SDistTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -2,7 +2,7 @@
import unittest
import os
import time
from test.support import captured_stdout
from test.support import captured_stdout, run_unittest
from distutils.spawn import _nt_quote_args
from distutils.spawn import spawn, find_executable
@ -55,4 +55,4 @@ def test_suite():
return unittest.makeSuite(SpawnTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -3,6 +3,7 @@ import os
import unittest
from distutils.text_file import TextFile
from distutils.tests import support
from 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())

View File

@ -1,6 +1,7 @@
"""Tests for distutils.unixccompiler."""
import sys
import unittest
from test.support import run_unittest
from distutils import sysconfig
from distutils.unixccompiler import UnixCCompiler
@ -118,4 +119,4 @@ def test_suite():
return unittest.makeSuite(UnixCCompilerTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -1,13 +1,12 @@
"""Tests for distutils.command.upload."""
import sys
import os
import unittest
import http.client as httpclient
from test.support import run_unittest
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 = """\
@ -136,4 +135,4 @@ def test_suite():
return unittest.makeSuite(uploadTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -3,6 +3,7 @@ import os
import sys
import unittest
from copy import copy
from test.support import run_unittest
from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError
from distutils.util import (get_platform, convert_path, change_root,
@ -274,4 +275,4 @@ def test_suite():
return unittest.makeSuite(UtilTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")
run_unittest(test_suite())

View File

@ -2,6 +2,7 @@
import unittest
from distutils.version import LooseVersion
from distutils.version import StrictVersion
from 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())

View File

@ -4,6 +4,10 @@
import distutils.versionpredicate
import doctest
from test.support import run_unittest
def test_suite():
return doctest.DocTestSuite(distutils.versionpredicate)
if __name__ == '__main__':
run_unittest(test_suite())

View File

@ -64,15 +64,12 @@ class GettextBaseTest(unittest.TestCase):
def setUp(self):
if not os.path.isdir(LOCALEDIR):
os.makedirs(LOCALEDIR)
fp = open(MOFILE, 'wb')
fp.write(base64.decodebytes(GNU_MO_DATA))
fp.close()
fp = open(UMOFILE, 'wb')
fp.write(base64.decodebytes(UMO_DATA))
fp.close()
fp = open(MMOFILE, 'wb')
fp.write(base64.decodebytes(MMO_DATA))
fp.close()
with open(MOFILE, 'wb') as fp:
fp.write(base64.decodebytes(GNU_MO_DATA))
with open(UMOFILE, 'wb') as fp:
fp.write(base64.decodebytes(UMO_DATA))
with open(MMOFILE, 'wb') as fp:
fp.write(base64.decodebytes(MMO_DATA))
self.env = support.EnvironmentVarGuard()
self.env['LANGUAGE'] = 'xx'
gettext._translations.clear()
@ -135,9 +132,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 +223,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 +294,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.gettext
def test_unicode_msgid(self):
@ -319,15 +311,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()

View File

@ -6,7 +6,7 @@ class TupleTest(seq_tests.CommonTest):
type2test = tuple
def test_constructors(self):
super().test_len()
super().test_constructors()
# calling built-in types without argument must return empty
self.assertEqual(tuple(), ())
t0_3 = (0, 1, 2, 3)

View File

@ -37,6 +37,10 @@ Core and Builtins
Library
-------
- Issue #2236: distutils' mkpath ignored the mode parameter.
- Fix typo in one sdist option (medata-check).
- Issue #11089: Fix performance issue limiting the use of ConfigParser()
with large config files.