From b879b1d79796ddfac68a0ae593f065ec00de833a Mon Sep 17 00:00:00 2001 From: JinWang An Date: Mon, 28 Dec 2020 13:45:06 +0900 Subject: [PATCH] Imported Upstream version 2.1.0 --- AUTHORS | 1 + ChangeLog | 10 ++++++++ PKG-INFO | 2 +- doc/source/index.rst | 47 +++++++++++++++++++++++++++++++++++ pbr.egg-info/PKG-INFO | 2 +- pbr.egg-info/entry_points.txt | 3 --- pbr/builddoc.py | 17 +++---------- pbr/testr_command.py | 19 ++++++++------ pbr/tests/test_setup.py | 6 ++++- pbr/version.py | 5 ++-- setup.cfg | 2 -- test-requirements.txt | 2 +- tox.ini | 4 +-- 13 files changed, 86 insertions(+), 34 deletions(-) diff --git a/AUTHORS b/AUTHORS index cc4b4ee..d93725a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,6 +1,7 @@ Akihiro Motoki Alex Gaynor Alexander Makarov +Alfredo Moralejo Andreas Jaeger Andrew Bogott Angus Salkeld diff --git a/ChangeLog b/ChangeLog index 9c3b41b..2218ced 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,22 @@ CHANGES ======= +2.1.0 +----- + +* Lazy import pkg_resources +* Initialize sphinx config using application instead of config +* Updated from global requirements +* Also generate XML coverage report +* Update to a newer hacking library + 2.0.0 ----- * tox: Don't set skipsdist=True * Stop using 'warnerrors' * doc: Clarify sections in 'setup.cfg' +* Remove testr entry point * Updated from global requirements * Remove discover from test-requirements * Add Constraints support diff --git a/PKG-INFO b/PKG-INFO index 37503ca..3b4f8eb 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pbr -Version: 2.0.0 +Version: 2.1.0 Summary: Python Build Reasonableness Home-page: http://docs.openstack.org/developer/pbr/ Author: OpenStack diff --git a/doc/source/index.rst b/doc/source/index.rst index a2b4342..4c80aa6 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -390,6 +390,53 @@ environment, you can use:: testing = quux:python_version=='2.7' + +Testing +------- + +pbr overrides the ``setuptools`` hook ``test`` (i.e. ``setup.py +test``). The following sequence is followed: + +#. If a ``.testr.conf`` file exists and `testrepository + `__ is installed, PBR + will use it as the test runner. See the ``testr`` documentation + for more details. + + .. note:: + + This is separate to ``setup.py testr`` (note the extra ``r``) which + is provided directly by the ``testrepository`` package. Be careful + as there is some overlap of command arguments. + +#. Although deprecated, if ``[nosetests]`` is defined in ``setup.cfg`` + and `nose `__ is installed, + the ``nose`` runner will be used. + +#. In other cases no override will be installed and the ``test`` + command will revert to `setuptools + `__. + +A typical usage would be in ``tox.ini`` such as:: + + [tox] + minversion = 2.0 + skipsdist = True + envlist = py33,py34,py35,py26,py27,pypy,pep8,docs + + [testenv] + usedevelop = True + setenv = + VIRTUAL_ENV={envdir} + CLIENT_NAME=pbr + deps = . + -r{toxinidir}/test-requirements.txt + commands = + python setup.py test --testr-args='{posargs}' + +The argument ``--coverage`` will set ``PYTHON`` to ``coverage run`` to +produce a coverage report. ``--coverage-package-name`` can be used to +modify or narrow the packages traced. + Additional Docs =============== diff --git a/pbr.egg-info/PKG-INFO b/pbr.egg-info/PKG-INFO index 37503ca..3b4f8eb 100644 --- a/pbr.egg-info/PKG-INFO +++ b/pbr.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pbr -Version: 2.0.0 +Version: 2.1.0 Summary: Python Build Reasonableness Home-page: http://docs.openstack.org/developer/pbr/ Author: OpenStack diff --git a/pbr.egg-info/entry_points.txt b/pbr.egg-info/entry_points.txt index 71832ff..ba19578 100644 --- a/pbr.egg-info/entry_points.txt +++ b/pbr.egg-info/entry_points.txt @@ -1,9 +1,6 @@ [console_scripts] pbr = pbr.cmd.main:main -[distutils.commands] -testr = pbr.testr_command:Testr - [distutils.setup_keywords] pbr = pbr.core:pbr diff --git a/pbr/builddoc.py b/pbr/builddoc.py index f51b283..4f05673 100644 --- a/pbr/builddoc.py +++ b/pbr/builddoc.py @@ -17,9 +17,7 @@ from distutils import log import fnmatch import os -import pkg_resources import sys -import warnings try: import cStringIO @@ -29,7 +27,6 @@ except ImportError: try: from sphinx import apidoc from sphinx import application - from sphinx import config from sphinx import setup_command except Exception as e: # NOTE(dhellmann): During the installation of docutils, setuptools @@ -134,16 +131,6 @@ class LocalBuildDoc(setup_command.BuildDoc): confoverrides['release'] = self.release if self.today: confoverrides['today'] = self.today - sphinx_config = config.Config(self.config_dir, 'conf.py', {}, []) - sphinx_ver = pkg_resources.parse_version( - pkg_resources.get_distribution("sphinx").version) - if sphinx_ver > pkg_resources.parse_version('1.2.3'): - sphinx_config.init_values(warnings.warn) - else: - sphinx_config.init_values() - if self.builder == 'man' and len( - getattr(sphinx_config, 'man_pages', '')) == 0: - return if self.sphinx_initialized: confoverrides['suppress_warnings'] = [ 'app.add_directive', 'app.add_role', @@ -153,6 +140,10 @@ class LocalBuildDoc(setup_command.BuildDoc): self.builder_target_dir, self.doctree_dir, self.builder, confoverrides, status_stream, freshenv=self.fresh_env, warningiserror=self.warning_is_error) + sphinx_config = app.config + if self.builder == 'man' and len( + getattr(sphinx_config, 'man_pages', '')) == 0: + return self.sphinx_initialized = True try: diff --git a/pbr/testr_command.py b/pbr/testr_command.py index 2598a0b..cd179a2 100644 --- a/pbr/testr_command.py +++ b/pbr/testr_command.py @@ -26,16 +26,18 @@ # license you chose for the specific language governing permissions and # limitations under that license. -"""setuptools/distutils commands to run testr via setup.py +"""setuptools/distutils command to run testr via setup.py -Currently provides 'testr' which runs tests using testr. You can pass ---coverage which will also export PYTHON='coverage run --source ' -and automatically combine the coverage from each testr backend test runner -after the run completes. +PBR will hook in the Testr class to provide "setup.py test" when +.testr.conf is present in the repository (see pbr/hooks/commands.py). + +If we are activated but testrepository is not installed, we provide a +sensible error. + +You can pass --coverage which will also export PYTHON='coverage run +--source ' and automatically combine the coverage from +each testr backend test runner after the run completes. -To use, just use setuptools/distribute and depend on testr, and it should be -picked up automatically (as the commands are exported in the testrepository -package metadata. """ from distutils import cmd @@ -133,6 +135,7 @@ class TestrReal(cmd.Command): logger.debug("_coverage_after called") os.system("coverage combine") os.system("coverage html -d ./cover %s" % self.omit) + os.system("coverage xml -o ./cover/coverage.xml %s" % self.omit) class TestrFake(cmd.Command): diff --git a/pbr/tests/test_setup.py b/pbr/tests/test_setup.py index 0754a8d..0930e35 100644 --- a/pbr/tests/test_setup.py +++ b/pbr/tests/test_setup.py @@ -224,6 +224,10 @@ class GitLogsTest(base.BaseTestCase): self.assertTrue(co_author in authors) +class _SphinxConfig(object): + man_pages = ['foo'] + + class BaseSphinxTest(base.BaseTestCase): def setUp(self): @@ -234,7 +238,7 @@ class BaseSphinxTest(base.BaseTestCase): self.useFixture(fixtures.MonkeyPatch( "sphinx.application.Sphinx.build", lambda *a, **kw: None)) self.useFixture(fixtures.MonkeyPatch( - "sphinx.config.Config.man_pages", ['foo'])) + "sphinx.application.Sphinx.config", _SphinxConfig)) self.useFixture(fixtures.MonkeyPatch( "sphinx.config.Config.init_values", lambda *a: None)) self.useFixture(fixtures.MonkeyPatch( diff --git a/pbr/version.py b/pbr/version.py index e775267..474faf1 100644 --- a/pbr/version.py +++ b/pbr/version.py @@ -22,8 +22,6 @@ import itertools import operator import sys -import pkg_resources - def _is_int(string): try: @@ -435,6 +433,9 @@ class VersionInfo(object): record associated with the package, and if there is no such record falls back to the logic sdist would use. """ + # Lazy import because pkg_resources is costly to import so defer until + # we absolutely need it. + import pkg_resources try: requirement = pkg_resources.Requirement.parse(self.package) provider = pkg_resources.get_provider(requirement) diff --git a/setup.cfg b/setup.cfg index ed6ec28..899e5f3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -41,8 +41,6 @@ autodoc_tree_excludes = [entry_points] distutils.setup_keywords = pbr = pbr.core:pbr -distutils.commands = - testr = pbr.testr_command:Testr egg_info.writers = pbr.json = pbr.pbr_json:write_pbr_json console_scripts = diff --git a/test-requirements.txt b/test-requirements.txt index 221e36f..9af2728 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,7 +3,7 @@ # process, which may cause wedges in the gate later. coverage>=4.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD -hacking<0.11,>=0.10.0 +hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 mock>=2.0 # BSD python-subunit>=0.0.18 # Apache-2.0/BSD sphinx>=1.5.1 # BSD diff --git a/tox.ini b/tox.ini index a288adf..823a8e8 100644 --- a/tox.ini +++ b/tox.ini @@ -11,7 +11,7 @@ setenv = CLIENT_NAME=pbr deps = -r{toxinidir}/test-requirements.txt commands = - python setup.py testr --testr-args='{posargs}' + python setup.py test --testr-args='{posargs}' [tox:jenkins] sitepackages = True @@ -24,7 +24,7 @@ commands = python setup.py build_sphinx [testenv:cover] commands = - python setup.py testr --coverage + python setup.py test --coverage [testenv:venv] commands = {posargs} -- 2.34.1