--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pbr/patches/testr.patch Mon Feb 29 17:08:45 2016 -0800
@@ -0,0 +1,102 @@
+From 946cf80b750f3735a5d3b0c2173f4eaa7fad4a81 Mon Sep 17 00:00:00 2001
+From: Akihiro Motoki <[email protected]>
+Date: Mon, 29 Sep 2014 07:36:19 +0900
+Subject: [PATCH] Make setup.py --help-commands work without testrepository
+
+testr command is registered by pbr.hooks.commands if
+testrepository is installed, so there is no need to
+setup the entry point in setup.cfg.
+
+Change-Id: I95aae12d1ac810b6d1d09b71f2a0d87be5ccb6ab
+Closes-Bug: #1375048
+---
+ pbr/packaging.py | 24 +++++++++---------------
+ pbr/testr_command.py | 27 ++++++++++++++++++++++++---
+ 2 files changed, 33 insertions(+), 18 deletions(-)
+
+--- a/pbr/packaging.py
++++ b/pbr/packaging.py
+@@ -39,6 +39,7 @@
+ from pbr import git
+ from pbr import options
+ import pbr.pbr_json
++from pbr import testr_command
+ from pbr import version
+
+ REQUIREMENTS_FILES = ('requirements.txt', 'tools/pip-requires')
+@@ -250,24 +250,16 @@
+-try:
+- from pbr import testr_command
+-
+- class TestrTest(testr_command.Testr, _PipInstallTestRequires):
+- """Make setup.py test do the right thing."""
+-
+- command_name = 'test'
+-
+- def run(self):
+- self.pre_run()
+- # Can't use super - base class old-style class
+- testr_command.Testr.run(self)
++class TestrTest(testr_command.Testr, _PipInstallTestRequires):
++ """Make setup.py test do the right thing."""
+
+- _have_testr = True
++ command_name = 'test'
+
+-except ImportError:
+- _have_testr = False
++ def run(self):
++ # Can't use super - base class old-style class
++ testr_command.Testr.run(self)
+
+
+ def have_testr():
+- return _have_testr
++ return testr_command.have_testr
++
+
+ try:
+ from nose import commands
+--- a/pbr/testr_command.py
++++ b/pbr/testr_command.py
+@@ -44,12 +44,10 @@
+ import os
+ import sys
+
+-from testrepository import commands
+-
+ logger = logging.getLogger(__name__)
+
+
+-class Testr(cmd.Command):
++class TestrReal(cmd.Command):
+
+ description = "Run unit tests using testr"
+
+@@ -133,3 +131,26 @@ def _coverage_after(self):
+ logger.debug("_coverage_after called")
+ os.system("coverage combine")
+ os.system("coverage html -d ./cover %s" % self.omit)
++
++
++class TestrFake(cmd.Command):
++ description = "Run unit tests using testr"
++ user_options = []
++
++ def initialize_options(self):
++ pass
++
++ def finalize_options(self):
++ pass
++
++ def run(self):
++ print("Install testrepository to run 'testr' command properly.")
++
++
++try:
++ from testrepository import commands
++ have_testr = True
++ Testr = TestrReal
++except ImportError:
++ have_testr = False
++ Testr = TestrFake