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
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.
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

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')
with open(MOFILE, 'wb') as fp:
fp.write(base64.decodebytes(GNU_MO_DATA))
fp.close()
fp = open(UMOFILE, 'wb')
with open(UMOFILE, 'wb') as fp:
fp.write(base64.decodebytes(UMO_DATA))
fp.close()
fp = open(MMOFILE, 'wb')
with open(MMOFILE, 'wb') as fp:
fp.write(base64.decodebytes(MMO_DATA))
fp.close()
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')
with open(self.mofile, 'rb') as fp:
t = gettext.GNUTranslations(fp)
fp.close()
# 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')
with open(self.mofile, 'rb') as fp:
t = gettext.GNUTranslations(fp)
fp.close()
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.