Hello community, here is the log from the commit of package python3-pbr for openSUSE:Factory checked in at 2015-11-18 22:33:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-pbr (Old) and /work/SRC/openSUSE:Factory/.python3-pbr.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pbr" Changes: -------- --- /work/SRC/openSUSE:Factory/python3-pbr/python3-pbr-doc.changes 2015-09-30 05:52:01.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python3-pbr.new/python3-pbr-doc.changes 2015-11-18 22:33:58.000000000 +0100 @@ -1,0 +2,10 @@ +Thu Oct 8 16:40:25 UTC 2015 - [email protected] + +- update to version 1.8.1: + * Handle the case where cmd.distribution has no pbr attribute + * test_integration cleanups + * Remove redundant testscenarios glue + * Add standard code coverage configuration file + * Add shields.io version/downloads links/badges into README.rst + +------------------------------------------------------------------- python3-pbr.changes: same change Old: ---- pbr-1.8.0.tar.gz New: ---- pbr-1.8.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-pbr-doc.spec ++++++ --- /var/tmp/diff_new_pack.PeMp1c/_old 2015-11-18 22:33:59.000000000 +0100 +++ /var/tmp/diff_new_pack.PeMp1c/_new 2015-11-18 22:33:59.000000000 +0100 @@ -17,7 +17,7 @@ Name: python3-pbr-doc -Version: 1.8.0 +Version: 1.8.1 Release: 0 Summary: Documentation for python3-pbr License: Apache-2.0 ++++++ python3-pbr.spec ++++++ --- /var/tmp/diff_new_pack.PeMp1c/_old 2015-11-18 22:33:59.000000000 +0100 +++ /var/tmp/diff_new_pack.PeMp1c/_new 2015-11-18 22:33:59.000000000 +0100 @@ -21,7 +21,7 @@ %bcond_with test Name: python3-pbr -Version: 1.8.0 +Version: 1.8.1 Release: 0 Summary: Python Build Reasonableness License: Apache-2.0 ++++++ pbr-1.8.0.tar.gz -> pbr-1.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/.coveragerc new/pbr-1.8.1/.coveragerc --- old/pbr-1.8.0/.coveragerc 1970-01-01 01:00:00.000000000 +0100 +++ new/pbr-1.8.1/.coveragerc 2015-10-07 23:56:44.000000000 +0200 @@ -0,0 +1,8 @@ +[run] +branch = True +source = pbr +omit = pbr/tests/*,pbr/openstack/* + +[report] +ignore_errors = True +precision = 2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/AUTHORS new/pbr-1.8.1/AUTHORS --- old/pbr-1.8.0/AUTHORS 2015-09-14 22:59:19.000000000 +0200 +++ new/pbr-1.8.1/AUTHORS 2015-10-07 23:57:05.000000000 +0200 @@ -72,6 +72,7 @@ Robert Collins <[email protected]> Robert Myers <[email protected]> Roger Luethi <[email protected]> +Ronald Bradford <[email protected]> Ruby Loo <[email protected]> Russell Bryant <[email protected]> Ryan Petrello <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/ChangeLog new/pbr-1.8.1/ChangeLog --- old/pbr-1.8.0/ChangeLog 2015-09-14 22:59:19.000000000 +0200 +++ new/pbr-1.8.1/ChangeLog 2015-10-07 23:57:05.000000000 +0200 @@ -1,6 +1,15 @@ CHANGES ======= +1.8.1 +----- + +* Handle the case where cmd.distribution has no pbr attribute +* test_integration cleanups +* Remove redundant testscenarios glue +* Add standard code coverage configuration file +* Add shields.io version/downloads links/badges into README.rst + 1.8.0 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/PKG-INFO new/pbr-1.8.1/PKG-INFO --- old/pbr-1.8.0/PKG-INFO 2015-09-14 22:59:19.000000000 +0200 +++ new/pbr-1.8.1/PKG-INFO 2015-10-07 23:57:05.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pbr -Version: 1.8.0 +Version: 1.8.1 Summary: Python Build Reasonableness Home-page: https://launchpad.net/pbr Author: OpenStack @@ -9,6 +9,14 @@ Description: Introduction ============ + .. image:: https://img.shields.io/pypi/v/pbr.svg + :target: https://pypi.python.org/pypi/pbr/ + :alt: Latest Version + + .. image:: https://img.shields.io/pypi/dm/pbr.svg + :target: https://pypi.python.org/pypi/pbr/ + :alt: Downloads + PBR is a library that injects some useful and sensible default behaviors into your setuptools run. It started off life as the chunks of code that were copied between all of the `OpenStack`_ projects. Around the time that diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/README.rst new/pbr-1.8.1/README.rst --- old/pbr-1.8.0/README.rst 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/README.rst 2015-10-07 23:56:44.000000000 +0200 @@ -1,6 +1,14 @@ Introduction ============ +.. image:: https://img.shields.io/pypi/v/pbr.svg + :target: https://pypi.python.org/pypi/pbr/ + :alt: Latest Version + +.. image:: https://img.shields.io/pypi/dm/pbr.svg + :target: https://pypi.python.org/pypi/pbr/ + :alt: Downloads + PBR is a library that injects some useful and sensible default behaviors into your setuptools run. It started off life as the chunks of code that were copied between all of the `OpenStack`_ projects. Around the time that diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr/pbr_json.py new/pbr-1.8.1/pbr/pbr_json.py --- old/pbr-1.8.0/pbr/pbr_json.py 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/pbr/pbr_json.py 2015-10-07 23:56:45.000000000 +0200 @@ -20,7 +20,7 @@ def write_pbr_json(cmd, basename, filename): - if not cmd.distribution.pbr: + if not hasattr(cmd.distribution, 'pbr') or not cmd.distribution.pbr: return git_dir = git._run_git_functions() if not git_dir: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr/tests/__init__.py new/pbr-1.8.1/pbr/tests/__init__.py --- old/pbr-1.8.0/pbr/tests/__init__.py 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/pbr/tests/__init__.py 2015-10-07 23:56:45.000000000 +0200 @@ -0,0 +1,26 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +import testscenarios + + +def load_tests(loader, standard_tests, pattern): + # top level directory cached on loader instance + this_dir = os.path.dirname(__file__) + package_tests = loader.discover(start_dir=this_dir, pattern=pattern) + result = loader.suiteClass() + result.addTests(testscenarios.generate_scenarios(standard_tests)) + result.addTests(testscenarios.generate_scenarios(package_tests)) + return result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr/tests/test_integration.py new/pbr-1.8.1/pbr/tests/test_integration.py --- old/pbr-1.8.0/pbr/tests/test_integration.py 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/pbr/tests/test_integration.py 2015-10-07 23:56:45.000000000 +0200 @@ -13,13 +13,15 @@ import os.path import shlex +import sys import fixtures -import testscenarios import testtools +import textwrap import virtualenv from pbr.tests import base +from pbr.tests.test_packaging import TestRepo PIPFLAGS = shlex.split(os.environ.get('PIPFLAGS', '')) PIPVERSION = os.environ.get('PIPVERSION', 'pip') @@ -28,6 +30,7 @@ WHEELHOUSE = os.environ.get('WHEELHOUSE', '') PIP_CMD = ['-m', 'pip'] + PIPFLAGS + ['install', '-f', WHEELHOUSE] PROJECTS = shlex.split(os.environ.get('PROJECTS', '')) +PBR_ROOT = os.path.abspath(os.path.join(__file__, '..', '..', '..')) def all_projects(): @@ -50,6 +53,41 @@ yield (short_name, dict(name=name, short_name=short_name)) +class Venv(fixtures.Fixture): + """Create a virtual environment for testing with. + + :attr path: The path to the environment root. + :attr python: The path to the python binary in the environment. + """ + + def __init__(self, reason, install_pbr=True): + """Create a Venv fixture. + + :param reason: A human readable string to bake into the venv + file path to aid diagnostics in the case of failures. + :param install_pbr: By default pbr is installed inside the + venv. Setting this to false will disable that. + """ + self._reason = reason + self._install_pbr = install_pbr + + def _setUp(self): + path = self.useFixture(fixtures.TempDir()).path + virtualenv.create_environment(path, clear=True) + python = os.path.join(path, 'bin', 'python') + command = [python] + PIP_CMD + [ + '-U', PIPVERSION, 'wheel'] + if self._install_pbr: + command.append(PBRVERSION) + self.useFixture(base.CapturedSubprocess( + 'mkvenv-' + self._reason, command)) + self.addCleanup(delattr, self, 'path') + self.addCleanup(delattr, self, 'python') + self.path = path + self.python = python + return path, python + + class TestIntegration(base.BaseTestCase): scenarios = list(all_projects()) @@ -57,20 +95,12 @@ def setUp(self): # Integration tests need a higher default - big repos can be slow to # clone, particularly under guest load. - os.environ['OS_TEST_TIMEOUT'] = os.environ.get('OS_TEST_TIMEOUT', - '600') - super(TestIntegration, self).setUp() + env = fixtures.EnvironmentVariable( + 'OS_TEST_TIMEOUT', os.environ.get('OS_TEST_TIMEOUT', '600')) + with env: + super(TestIntegration, self).setUp() base._config_git() - def venv(self, reason): - path = self.useFixture(fixtures.TempDir()).path - virtualenv.create_environment(path, clear=True) - python = os.path.join(path, 'bin', 'python') - self.useFixture(base.CapturedSubprocess( - 'mkvenv-' + reason, [python] + PIP_CMD + [ - '-U', PIPVERSION, 'wheel', PBRVERSION])) - return path, python - @testtools.skipUnless( os.environ.get('PBR_INTEGRATION', None) == '1', 'integration tests not enabled') @@ -96,15 +126,19 @@ self.useFixture(base.CapturedSubprocess( 'clone', ['git', 'clone', os.path.join(REPODIR, self.short_name), path])) - _, python = self.venv('sdist') + venv = self.useFixture(Venv('sdist')) + python = venv.python self.useFixture(base.CapturedSubprocess( 'sdist', [python, 'setup.py', 'sdist'], cwd=path)) - _, python = self.venv('tarball') + venv = self.useFixture(Venv('tarball')) + python = venv.python filename = os.path.join( path, 'dist', os.listdir(os.path.join(path, 'dist'))[0]) self.useFixture(base.CapturedSubprocess( 'tarball', [python] + PIP_CMD + [filename])) - root, python = self.venv('install-git') + venv = self.useFixture(Venv('install-git')) + root = venv.path + python = venv.python self.useFixture(base.CapturedSubprocess( 'install-git', [python] + PIP_CMD + ['git+file://' + path])) if self.short_name == 'nova': @@ -113,10 +147,80 @@ if 'migrate.cfg' in filenames: found = True self.assertTrue(found) - _, python = self.venv('install-e') + venv = self.useFixture(Venv('install-e')) + root = venv.path + python = venv.python self.useFixture(base.CapturedSubprocess( 'install-e', [python] + PIP_CMD + ['-e', path])) -def load_tests(loader, in_tests, pattern): - return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern) +class TestInstallWithoutPbr(base.BaseTestCase): + + @testtools.skipUnless( + os.environ.get('PBR_INTEGRATION', None) == '1', + 'integration tests not enabled') + def test_install_without_pbr(self): + # Test easy-install of a thing that depends on a thing using pbr + tempdir = self.useFixture(fixtures.TempDir()).path + # A directory containing sdists of the things we're going to depend on + # in using-package. + dist_dir = os.path.join(tempdir, 'distdir') + os.mkdir(dist_dir) + self._run_cmd(sys.executable, ('setup.py', 'sdist', '-d', dist_dir), + allow_fail=False, cwd=PBR_ROOT) + # testpkg - this requires a pbr-using package + test_pkg_dir = os.path.join(tempdir, 'testpkg') + os.mkdir(test_pkg_dir) + with open(os.path.join(test_pkg_dir, 'setup.py'), 'wt') as f: + f.write(textwrap.dedent("""\ + #!/usr/bin/env python + import setuptools + setuptools.setup( + name = 'pkgTest', + tests_require = ['pkgReq'], + test_suite='pkgReq' + ) + """)) + with open(os.path.join(test_pkg_dir, 'setup.cfg'), 'wt') as f: + f.write(textwrap.dedent("""\ + [easy_install] + find_links = %s + """ % dist_dir)) + repoTest = self.useFixture(TestRepo(test_pkg_dir)) + repoTest.commit() + # reqpkg - this is a package that requires pbr + req_pkg_dir = os.path.join(tempdir, 'reqpkg') + pkg_req_module = os.path.join(req_pkg_dir, 'pkgReq/') + os.makedirs(pkg_req_module) + with open(os.path.join(req_pkg_dir, 'setup.py'), 'wt') as f: + f.write(textwrap.dedent("""\ + #!/usr/bin/env python + import setuptools + setuptools.setup( + setup_requires=['pbr'], + pbr=True + ) + """)) + with open(os.path.join(req_pkg_dir, 'setup.cfg'), 'wt') as f: + f.write(textwrap.dedent("""\ + [metadata] + name = pkgReq + """)) + with open(os.path.join(req_pkg_dir, 'requirements.txt'), 'wt') as f: + f.write(textwrap.dedent("""\ + pbr + """)) + with open(os.path.join(req_pkg_dir, 'pkgReq/__init__.py'), 'wt') as f: + f.write(textwrap.dedent("""\ + print("FakeTest loaded and ran") + """)) + repoReq = self.useFixture(TestRepo(req_pkg_dir)) + repoReq.commit() + self._run_cmd(sys.executable, ('setup.py', 'sdist', '-d', dist_dir), + allow_fail=False, cwd=req_pkg_dir) + # A venv to test within + venv = self.useFixture(Venv('nopbr', install_pbr=False)) + python = venv.python + # Run the depending script + self.useFixture(base.CapturedSubprocess( + 'nopbr', [python] + ['setup.py', 'test'], cwd=test_pkg_dir)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr/tests/test_packaging.py new/pbr-1.8.1/pbr/tests/test_packaging.py --- old/pbr-1.8.0/pbr/tests/test_packaging.py 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/pbr/tests/test_packaging.py 2015-10-07 23:56:45.000000000 +0200 @@ -48,7 +48,6 @@ import mock import pkg_resources import six -import testscenarios from testtools import matchers from pbr import git @@ -514,7 +513,3 @@ pkg_resources.split_sections(requires)) self.assertEqual(expected_requirements, generated_requirements) - - -def load_tests(loader, in_tests, pattern): - return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr/tests/test_setup.py new/pbr-1.8.1/pbr/tests/test_setup.py --- old/pbr-1.8.0/pbr/tests/test_setup.py 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/pbr/tests/test_setup.py 2015-10-07 23:56:45.000000000 +0200 @@ -28,7 +28,6 @@ BytesIO = io.BytesIO import fixtures -import testscenarios from pbr import git from pbr import options @@ -424,7 +423,3 @@ self.assertEqual( ["git://foo.com/zipball#egg=bar"], packaging.parse_dependency_links([self.tmp_file])) - - -def load_tests(loader, in_tests, pattern): - return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr/tests/test_util.py new/pbr-1.8.1/pbr/tests/test_util.py --- old/pbr-1.8.0/pbr/tests/test_util.py 2015-09-14 22:58:58.000000000 +0200 +++ new/pbr-1.8.1/pbr/tests/test_util.py 2015-10-07 23:56:45.000000000 +0200 @@ -17,7 +17,6 @@ import six from six.moves import configparser -import testscenarios from pbr.tests import base from pbr import util @@ -74,7 +73,3 @@ self.assertEqual(self.expected_extra_requires, kwargs['extras_require']) - - -def load_tests(loader, in_tests, pattern): - return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr.egg-info/PKG-INFO new/pbr-1.8.1/pbr.egg-info/PKG-INFO --- old/pbr-1.8.0/pbr.egg-info/PKG-INFO 2015-09-14 22:59:19.000000000 +0200 +++ new/pbr-1.8.1/pbr.egg-info/PKG-INFO 2015-10-07 23:57:05.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pbr -Version: 1.8.0 +Version: 1.8.1 Summary: Python Build Reasonableness Home-page: https://launchpad.net/pbr Author: OpenStack @@ -9,6 +9,14 @@ Description: Introduction ============ + .. image:: https://img.shields.io/pypi/v/pbr.svg + :target: https://pypi.python.org/pypi/pbr/ + :alt: Latest Version + + .. image:: https://img.shields.io/pypi/dm/pbr.svg + :target: https://pypi.python.org/pypi/pbr/ + :alt: Downloads + PBR is a library that injects some useful and sensible default behaviors into your setuptools run. It started off life as the chunks of code that were copied between all of the `OpenStack`_ projects. Around the time that diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/pbr.egg-info/SOURCES.txt new/pbr-1.8.1/pbr.egg-info/SOURCES.txt --- old/pbr-1.8.0/pbr.egg-info/SOURCES.txt 2015-09-14 22:59:19.000000000 +0200 +++ new/pbr-1.8.1/pbr.egg-info/SOURCES.txt 2015-10-07 23:57:05.000000000 +0200 @@ -1,3 +1,4 @@ +.coveragerc .mailmap .testr.conf AUTHORS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pbr-1.8.0/setup.cfg new/pbr-1.8.1/setup.cfg --- old/pbr-1.8.0/setup.cfg 2015-09-14 22:59:19.000000000 +0200 +++ new/pbr-1.8.1/setup.cfg 2015-10-07 23:57:05.000000000 +0200 @@ -53,7 +53,7 @@ universal = 1 [egg_info] -tag_build = tag_date = 0 +tag_build = tag_svn_revision = 0
