Akihiro Motoki <motoki@da.jp.nec.com>
Alex Gaynor <alex.gaynor@gmail.com>
Alexander Makarov <amakarov@mirantis.com>
+Alfredo Moralejo <amoralej@redhat.com>
Andreas Jaeger <aj@suse.de>
Andrew Bogott <abogott@wikimedia.org>
Angus Salkeld <asalkeld@redhat.com>
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
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
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
+ <https://pypi.python.org/pypi/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 <http://nose.readthedocs.io/en/latest/>`__ is installed,
+ the ``nose`` runner will be used.
+
+#. In other cases no override will be installed and the ``test``
+ command will revert to `setuptools
+ <http://setuptools.readthedocs.io/en/latest/setuptools.html#test-build-package-and-run-a-unittest-suite>`__.
+
+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
===============
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
[console_scripts]
pbr = pbr.cmd.main:main
-[distutils.commands]
-testr = pbr.testr_command:Testr
-
[distutils.setup_keywords]
pbr = pbr.core:pbr
from distutils import log
import fnmatch
import os
-import pkg_resources
import sys
-import warnings
try:
import cStringIO
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
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',
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:
# 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 <your package>'
-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 <your package>' 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
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):
self.assertTrue(co_author in authors)
+class _SphinxConfig(object):
+ man_pages = ['foo']
+
+
class BaseSphinxTest(base.BaseTestCase):
def setUp(self):
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(
import operator
import sys
-import pkg_resources
-
def _is_int(string):
try:
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)
[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 =
# 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
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
[testenv:cover]
commands =
- python setup.py testr --coverage
+ python setup.py test --coverage
[testenv:venv]
commands = {posargs}