| Index: tools/telemetry/third_party/coverage/setup.py
|
| diff --git a/third_party/pycoverage/setup.py b/tools/telemetry/third_party/coverage/setup.py
|
| similarity index 52%
|
| copy from third_party/pycoverage/setup.py
|
| copy to tools/telemetry/third_party/coverage/setup.py
|
| index f0e83e677a39b59707c9221a61dafbbf03127ccf..010b5b7345a7fa8985c118ef2b9e6be7f832a739 100644
|
| --- a/third_party/pycoverage/setup.py
|
| +++ b/tools/telemetry/third_party/coverage/setup.py
|
| @@ -1,114 +1,99 @@
|
| -# setup.py for coverage.py
|
| +# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
|
| +# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
|
|
|
| -"""Code coverage measurement for Python
|
| +"""Code coverage measurement for Python"""
|
|
|
| -Coverage.py measures code coverage, typically during test execution. It uses
|
| -the code analysis tools and tracing hooks provided in the Python standard
|
| -library to determine which lines are executable, and which have been executed.
|
| -
|
| -Coverage.py runs on Pythons 2.3 through 3.3, and PyPy 1.9.
|
| -
|
| -Documentation is at `nedbatchelder.com <%s>`_. Code repository and issue
|
| -tracker are on `Bitbucket <http://bitbucket.org/ned/coveragepy>`_, with a
|
| -mirrored repo on `Github <https://github.com/nedbat/coveragepy>`_.
|
| -
|
| -New in 3.7: ``--debug``, and 12 bugs closed.
|
| -
|
| -New in 3.6: ``--fail-under``, and >20 bugs closed.
|
| -
|
| -New in 3.5: Branch coverage exclusions, keyboard shortcuts in HTML report.
|
| -
|
| -New in 3.4: Better control over source to measure, and unexecuted files
|
| -can be reported.
|
| +# Distutils setup for coverage.py
|
| +# This file is used unchanged under all versions of Python, 2.x and 3.x.
|
|
|
| -New in 3.3: .coveragerc files.
|
| +import os
|
| +import sys
|
|
|
| -New in 3.2: Branch coverage!
|
| -"""
|
| +from setuptools import setup
|
| +from distutils.core import Extension # pylint: disable=no-name-in-module, import-error
|
| +from distutils.command.build_ext import build_ext # pylint: disable=no-name-in-module, import-error
|
| +from distutils import errors # pylint: disable=no-name-in-module
|
|
|
| -# This file is used unchanged under all versions of Python, 2.x and 3.x.
|
| +# Get or massage our metadata. We exec coverage/version.py so we can avoid
|
| +# importing the product code into setup.py.
|
|
|
| classifiers = """\
|
| Environment :: Console
|
| Intended Audience :: Developers
|
| -License :: OSI Approved :: BSD License
|
| +License :: OSI Approved :: Apache Software License
|
| Operating System :: OS Independent
|
| -Programming Language :: Python :: 2
|
| -Programming Language :: Python :: 3
|
| +Programming Language :: Python :: 2.6
|
| +Programming Language :: Python :: 2.7
|
| +Programming Language :: Python :: 3.3
|
| +Programming Language :: Python :: 3.4
|
| +Programming Language :: Python :: 3.5
|
| +Programming Language :: Python :: Implementation :: CPython
|
| +Programming Language :: Python :: Implementation :: PyPy
|
| Topic :: Software Development :: Quality Assurance
|
| Topic :: Software Development :: Testing
|
| """
|
|
|
| -# Pull in the tools we need.
|
| -import os, sys
|
| -
|
| -from setuptools import setup
|
| -from distutils.core import Extension # pylint: disable=E0611,F0401
|
| -from distutils.command.build_ext import build_ext # pylint: disable=E0611,F0401,C0301
|
| -from distutils import errors # pylint: disable=E0611,F0401
|
| -
|
| -# Get or massage our metadata. We exec coverage/version.py so we can avoid
|
| -# importing the product code into setup.py.
|
| -
|
| -doc = __doc__ # __doc__ will be overwritten by version.py.
|
| -__version__ = __url__ = "" # Keep pylint happy.
|
| -
|
| cov_ver_py = os.path.join(os.path.split(__file__)[0], "coverage/version.py")
|
| -version_file = open(cov_ver_py)
|
| -try:
|
| +with open(cov_ver_py) as version_file:
|
| + # __doc__ will be overwritten by version.py.
|
| + doc = __doc__
|
| + # Keep pylint happy.
|
| + __version__ = __url__ = version_info = ""
|
| + # Execute the code in version.py.
|
| exec(compile(version_file.read(), cov_ver_py, 'exec'))
|
| -finally:
|
| - version_file.close()
|
|
|
| -doclines = (doc % __url__).splitlines()
|
| +with open("README.rst") as readme:
|
| + long_description = readme.read().replace("http://coverage.readthedocs.org", __url__)
|
| +
|
| classifier_list = classifiers.splitlines()
|
|
|
| -if 'a' in __version__:
|
| +if version_info[3] == 'alpha':
|
| devstat = "3 - Alpha"
|
| -elif 'b' in __version__:
|
| +elif version_info[3] in ['beta', 'candidate']:
|
| devstat = "4 - Beta"
|
| else:
|
| + assert version_info[3] == 'final'
|
| devstat = "5 - Production/Stable"
|
| classifier_list.append("Development Status :: " + devstat)
|
|
|
| -# Install a script as "coverage", and as "coverage[23]", and as
|
| -# "coverage-2.7" (or whatever).
|
| -scripts = [
|
| - 'coverage = coverage:main',
|
| - 'coverage%d = coverage:main' % sys.version_info[:1],
|
| - 'coverage-%d.%d = coverage:main' % sys.version_info[:2],
|
| - ]
|
| -
|
| # Create the keyword arguments for setup()
|
|
|
| setup_args = dict(
|
| - name = 'coverage',
|
| - version = __version__,
|
| + name='coverage',
|
| + version=__version__,
|
|
|
| - packages = [
|
| + packages=[
|
| 'coverage',
|
| - ],
|
| + ],
|
|
|
| - package_data = {
|
| + package_data={
|
| 'coverage': [
|
| 'htmlfiles/*.*',
|
| - ]
|
| - },
|
| -
|
| - entry_points = {'console_scripts': scripts},
|
| -
|
| - # We need to get HTML assets from our htmlfiles dir.
|
| - zip_safe = False,
|
| -
|
| - author = 'Ned Batchelder and others',
|
| - author_email = 'ned@nedbatchelder.com',
|
| - description = doclines[0],
|
| - long_description = '\n'.join(doclines[2:]),
|
| - keywords = 'code coverage testing',
|
| - license = 'BSD',
|
| - classifiers = classifier_list,
|
| - url = __url__,
|
| - )
|
| + ]
|
| + },
|
| +
|
| + entry_points={
|
| + # Install a script as "coverage", and as "coverage[23]", and as
|
| + # "coverage-2.7" (or whatever).
|
| + 'console_scripts': [
|
| + 'coverage = coverage.cmdline:main',
|
| + 'coverage%d = coverage.cmdline:main' % sys.version_info[:1],
|
| + 'coverage-%d.%d = coverage.cmdline:main' % sys.version_info[:2],
|
| + ],
|
| + },
|
| +
|
| + # We need to get HTML assets from our htmlfiles directory.
|
| + zip_safe=False,
|
| +
|
| + author='Ned Batchelder and others',
|
| + author_email='ned@nedbatchelder.com',
|
| + description=doc,
|
| + long_description=long_description,
|
| + keywords='code coverage testing',
|
| + license='Apache 2.0',
|
| + classifiers=classifier_list,
|
| + url=__url__,
|
| +)
|
|
|
| # A replacement for the build_ext command which raises a single exception
|
| # if the build fails, so we can fallback nicely.
|
| @@ -118,16 +103,18 @@ ext_errors = (
|
| errors.DistutilsExecError,
|
| errors.DistutilsPlatformError,
|
| )
|
| -if sys.platform == 'win32' and sys.version_info > (2, 6):
|
| - # 2.6's distutils.msvc9compiler can raise an IOError when failing to
|
| +if sys.platform == 'win32':
|
| + # distutils.msvc9compiler can raise an IOError when failing to
|
| # find the compiler
|
| ext_errors += (IOError,)
|
|
|
| +
|
| class BuildFailed(Exception):
|
| """Raise this to indicate the C extension wouldn't build."""
|
| def __init__(self):
|
| Exception.__init__(self)
|
| - self.cause = sys.exc_info()[1] # work around py 2/3 different syntax
|
| + self.cause = sys.exc_info()[1] # work around py 2/3 different syntax
|
| +
|
|
|
| class ve_build_ext(build_ext):
|
| """Build C extensions, but fail with a straightforward exception."""
|
| @@ -142,14 +129,14 @@ class ve_build_ext(build_ext):
|
| def build_extension(self, ext):
|
| """Wrap `build_extension` with `BuildFailed`."""
|
| try:
|
| - # Uncomment to test compile failures:
|
| + # Uncomment to test compile failure handling:
|
| # raise errors.CCompilerError("OOPS")
|
| build_ext.build_extension(self, ext)
|
| except ext_errors:
|
| raise BuildFailed()
|
| - except ValueError:
|
| + except ValueError as err:
|
| # this can happen on Windows 64 bit, see Python issue 7511
|
| - if "'path'" in str(sys.exc_info()[1]): # works with both py 2/3
|
| + if "'path'" in str(err): # works with both py 2/3
|
| raise BuildFailed()
|
| raise
|
|
|
| @@ -168,20 +155,29 @@ if '__pypy__' in sys.builtin_module_names:
|
|
|
| if compile_extension:
|
| setup_args.update(dict(
|
| - ext_modules = [
|
| - Extension("coverage.tracer", sources=["coverage/tracer.c"])
|
| - ],
|
| - cmdclass = {
|
| + ext_modules=[
|
| + Extension(
|
| + "coverage.tracer",
|
| + sources=[
|
| + "coverage/ctracer/datastack.c",
|
| + "coverage/ctracer/filedisp.c",
|
| + "coverage/ctracer/module.c",
|
| + "coverage/ctracer/tracer.c",
|
| + ],
|
| + ),
|
| + ],
|
| + cmdclass={
|
| 'build_ext': ve_build_ext,
|
| - },
|
| - ))
|
| + },
|
| + ))
|
|
|
| # Py3.x-specific details.
|
|
|
| if sys.version_info >= (3, 0):
|
| setup_args.update(dict(
|
| - use_2to3 = False,
|
| - ))
|
| + use_2to3=False,
|
| + ))
|
| +
|
|
|
| def main():
|
| """Actually invoke setup() with the arguments we built above."""
|
| @@ -189,9 +185,8 @@ def main():
|
| # extension. Try it with, and if it fails, try it without.
|
| try:
|
| setup(**setup_args)
|
| - except BuildFailed:
|
| + except BuildFailed as exc:
|
| msg = "Couldn't install with extension module, trying without it..."
|
| - exc = sys.exc_info()[1]
|
| exc_msg = "%s: %s" % (exc.__class__.__name__, exc.cause)
|
| print("**\n** %s\n** %s\n**" % (msg, exc_msg))
|
|
|
|
|