diff options
-rw-r--r-- | pbr/builddoc.py | 10 | ||||
-rw-r--r-- | pbr/git.py | 14 | ||||
-rw-r--r-- | pbr/options.py | 4 | ||||
-rw-r--r-- | pbr/packaging.py | 2 | ||||
-rw-r--r-- | pbr/tests/test_packaging.py | 212 | ||||
-rw-r--r-- | pbr/tests/test_setup.py | 6 | ||||
-rw-r--r-- | pbr/tests/testpackage/doc/source/conf.py | 17 | ||||
-rw-r--r-- | pbr/tests/util.py | 4 | ||||
-rw-r--r-- | pbr/util.py | 7 | ||||
-rw-r--r-- | pbr/version.py | 4 | ||||
-rw-r--r-- | test-requirements.txt | 3 | ||||
-rw-r--r-- | tox.ini | 6 |
12 files changed, 141 insertions, 148 deletions
diff --git a/pbr/builddoc.py b/pbr/builddoc.py index f5c66ce..276eec6 100644 --- a/pbr/builddoc.py +++ b/pbr/builddoc.py @@ -132,11 +132,11 @@ class LocalBuildDoc(setup_command.BuildDoc): autoindex.write(" %s.rst\n" % module) def _sphinx_tree(self): - source_dir = self._get_source_dir() - cmd = ['-H', 'Modules', '-o', source_dir, '.'] - if apidoc_use_padding: - cmd.insert(0, 'apidoc') - apidoc.main(cmd + self.autodoc_tree_excludes) + source_dir = self._get_source_dir() + cmd = ['-H', 'Modules', '-o', source_dir, '.'] + if apidoc_use_padding: + cmd.insert(0, 'apidoc') + apidoc.main(cmd + self.autodoc_tree_excludes) def _sphinx_run(self): if not self.verbose: @@ -276,13 +276,14 @@ def write_git_changelog(git_dir=None, dest_dir=os.path.curdir, changelog = _iter_changelog(changelog) if not changelog: return + new_changelog = os.path.join(dest_dir, 'ChangeLog') - # If there's already a ChangeLog and it's not writable, just use it - if (os.path.exists(new_changelog) - and not os.access(new_changelog, os.W_OK)): + if os.path.exists(new_changelog) and not os.access(new_changelog, os.W_OK): + # If there's already a ChangeLog and it's not writable, just use it log.info('[pbr] ChangeLog not written (file already' ' exists and it is not writeable)') return + log.info('[pbr] Writing ChangeLog') with io.open(new_changelog, "w", encoding="utf-8") as changelog_file: for release, content in changelog: @@ -297,13 +298,14 @@ def generate_authors(git_dir=None, dest_dir='.', option_dict=dict()): 'SKIP_GENERATE_AUTHORS') if should_skip: return + start = time.time() old_authors = os.path.join(dest_dir, 'AUTHORS.in') new_authors = os.path.join(dest_dir, 'AUTHORS') - # If there's already an AUTHORS file and it's not writable, just use it - if (os.path.exists(new_authors) - and not os.access(new_authors, os.W_OK)): + if os.path.exists(new_authors) and not os.access(new_authors, os.W_OK): + # If there's already an AUTHORS file and it's not writable, just use it return + log.info('[pbr] Generating AUTHORS') ignore_emails = '((jenkins|zuul)@review|infra@lists|jenkins@openstack)' if git_dir is None: diff --git a/pbr/options.py b/pbr/options.py index 105b200..2313cc4 100644 --- a/pbr/options.py +++ b/pbr/options.py @@ -48,6 +48,6 @@ TRUE_VALUES = ('true', '1', 'yes') def get_boolean_option(option_dict, option_name, env_name): - return ((option_name in option_dict - and option_dict[option_name][1].lower() in TRUE_VALUES) or + return ((option_name in option_dict and + option_dict[option_name][1].lower() in TRUE_VALUES) or str(os.getenv(env_name)).lower() in TRUE_VALUES) diff --git a/pbr/packaging.py b/pbr/packaging.py index 932ccdb..a697992 100644 --- a/pbr/packaging.py +++ b/pbr/packaging.py @@ -328,6 +328,7 @@ except ImportError: def have_nose(): return _have_nose + _wsgi_text = """#PBR Generated from %(group)r import threading @@ -652,6 +653,7 @@ class LocalSDist(sdist.sdist): self.filelist.sort() sdist.sdist.make_distribution(self) + try: from pbr import builddoc _have_sphinx = True diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py index c7dafda..9a3778e 100644 --- a/pbr/tests/test_packaging.py +++ b/pbr/tests/test_packaging.py @@ -765,8 +765,10 @@ class TestVersions(base.BaseTestCase): def test_get_kwargs_corner_cases(self): # No tags: - git_dir = self.repo._basedir + '/.git' - get_kwargs = lambda tag: packaging._get_increment_kwargs(git_dir, tag) + + def get_kwargs(tag): + git_dir = self.repo._basedir + '/.git' + return packaging._get_increment_kwargs(git_dir, tag) def _check_combinations(tag): self.repo.commit() @@ -947,109 +949,109 @@ class TestRepositoryURLDependencies(base.BaseTestCase): 'pypi-proj1', 'pypi-proj2'])) def test_egg_fragment(self): - expected = [ - 'django-thumborize', - 'django-thumborize-beta', - 'django-thumborize2-beta', - 'django-thumborize2-beta>=4.0.1', - 'django-thumborize2-beta>=1.0.0-alpha.beta.1', - 'django-thumborize2-beta>=1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay', # noqa - 'django-thumborize2-beta>=2.0.0-rc.1+build.123', - 'django-thumborize-beta>=0.0.4', - 'django-thumborize-beta>=1.2.3', - 'django-thumborize-beta>=10.20.30', - 'django-thumborize-beta>=1.1.2-prerelease+meta', - 'django-thumborize-beta>=1.1.2+meta', - 'django-thumborize-beta>=1.1.2+meta-valid', - 'django-thumborize-beta>=1.0.0-alpha', - 'django-thumborize-beta>=1.0.0-beta', - 'django-thumborize-beta>=1.0.0-alpha.beta', - 'django-thumborize-beta>=1.0.0-alpha.beta.1', - 'django-thumborize-beta>=1.0.0-alpha.1', - 'django-thumborize-beta>=1.0.0-alpha0.valid', - 'django-thumborize-beta>=1.0.0-alpha.0valid', - 'django-thumborize-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay', # noqa - 'django-thumborize-beta>=1.0.0-rc.1+build.1', - 'django-thumborize-beta>=2.0.0-rc.1+build.123', - 'django-thumborize-beta>=1.2.3-beta', - 'django-thumborize-beta>=10.2.3-DEV-SNAPSHOT', - 'django-thumborize-beta>=1.2.3-SNAPSHOT-123', - 'django-thumborize-beta>=1.0.0', - 'django-thumborize-beta>=2.0.0', - 'django-thumborize-beta>=1.1.7', - 'django-thumborize-beta>=2.0.0+build.1848', - 'django-thumborize-beta>=2.0.1-alpha.1227', - 'django-thumborize-beta>=1.0.0-alpha+beta', - 'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12+788', - 'django-thumborize-beta>=1.2.3----R-S.12.9.1--.12+meta', - 'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12', - 'django-thumborize-beta>=1.0.0+0.build.1-rc.10000aaa-kk-0.1', - 'django-thumborize-beta>=999999999999999999.99999999999999.9999999999999', # noqa - 'Proj1', - 'Proj2>=0.0.1', - 'Proj3', - 'Proj4>=0.0.2', - 'Proj5', - 'Proj>=0.0.3', - 'Proj', - 'Proj>=0.0.4', - 'Proj', - 'foo-bar>=1.2.4', - ] - tests = [ - 'egg=django-thumborize', - 'egg=django-thumborize-beta', - 'egg=django-thumborize2-beta', - 'egg=django-thumborize2-beta-4.0.1', - 'egg=django-thumborize2-beta-1.0.0-alpha.beta.1', - 'egg=django-thumborize2-beta-1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay', # noqa - 'egg=django-thumborize2-beta-2.0.0-rc.1+build.123', - 'egg=django-thumborize-beta-0.0.4', - 'egg=django-thumborize-beta-1.2.3', - 'egg=django-thumborize-beta-10.20.30', - 'egg=django-thumborize-beta-1.1.2-prerelease+meta', - 'egg=django-thumborize-beta-1.1.2+meta', - 'egg=django-thumborize-beta-1.1.2+meta-valid', - 'egg=django-thumborize-beta-1.0.0-alpha', - 'egg=django-thumborize-beta-1.0.0-beta', - 'egg=django-thumborize-beta-1.0.0-alpha.beta', - 'egg=django-thumborize-beta-1.0.0-alpha.beta.1', - 'egg=django-thumborize-beta-1.0.0-alpha.1', - 'egg=django-thumborize-beta-1.0.0-alpha0.valid', - 'egg=django-thumborize-beta-1.0.0-alpha.0valid', - 'egg=django-thumborize-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay', # noqa - 'egg=django-thumborize-beta-1.0.0-rc.1+build.1', - 'egg=django-thumborize-beta-2.0.0-rc.1+build.123', - 'egg=django-thumborize-beta-1.2.3-beta', - 'egg=django-thumborize-beta-10.2.3-DEV-SNAPSHOT', - 'egg=django-thumborize-beta-1.2.3-SNAPSHOT-123', - 'egg=django-thumborize-beta-1.0.0', - 'egg=django-thumborize-beta-2.0.0', - 'egg=django-thumborize-beta-1.1.7', - 'egg=django-thumborize-beta-2.0.0+build.1848', - 'egg=django-thumborize-beta-2.0.1-alpha.1227', - 'egg=django-thumborize-beta-1.0.0-alpha+beta', - 'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12+788', # noqa - 'egg=django-thumborize-beta-1.2.3----R-S.12.9.1--.12+meta', - 'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12', - 'egg=django-thumborize-beta-1.0.0+0.build.1-rc.10000aaa-kk-0.1', # noqa - 'egg=django-thumborize-beta-999999999999999999.99999999999999.9999999999999', # noqa - 'egg=Proj1', - 'egg=Proj2-0.0.1', - 'egg=Proj3', - 'egg=Proj4-0.0.2', - 'egg=Proj5', - 'egg=Proj-0.0.3', - 'egg=Proj', - 'egg=Proj-0.0.4', - 'egg=Proj', - 'egg=foo-bar-1.2.4', - ] - for index, test in enumerate(tests): - self.assertEqual(expected[index], - re.sub(r'egg=([^&]+).*$', - packaging.egg_fragment, - test)) + expected = [ + 'django-thumborize', + 'django-thumborize-beta', + 'django-thumborize2-beta', + 'django-thumborize2-beta>=4.0.1', + 'django-thumborize2-beta>=1.0.0-alpha.beta.1', + 'django-thumborize2-beta>=1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay', # noqa + 'django-thumborize2-beta>=2.0.0-rc.1+build.123', + 'django-thumborize-beta>=0.0.4', + 'django-thumborize-beta>=1.2.3', + 'django-thumborize-beta>=10.20.30', + 'django-thumborize-beta>=1.1.2-prerelease+meta', + 'django-thumborize-beta>=1.1.2+meta', + 'django-thumborize-beta>=1.1.2+meta-valid', + 'django-thumborize-beta>=1.0.0-alpha', + 'django-thumborize-beta>=1.0.0-beta', + 'django-thumborize-beta>=1.0.0-alpha.beta', + 'django-thumborize-beta>=1.0.0-alpha.beta.1', + 'django-thumborize-beta>=1.0.0-alpha.1', + 'django-thumborize-beta>=1.0.0-alpha0.valid', + 'django-thumborize-beta>=1.0.0-alpha.0valid', + 'django-thumborize-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay', # noqa + 'django-thumborize-beta>=1.0.0-rc.1+build.1', + 'django-thumborize-beta>=2.0.0-rc.1+build.123', + 'django-thumborize-beta>=1.2.3-beta', + 'django-thumborize-beta>=10.2.3-DEV-SNAPSHOT', + 'django-thumborize-beta>=1.2.3-SNAPSHOT-123', + 'django-thumborize-beta>=1.0.0', + 'django-thumborize-beta>=2.0.0', + 'django-thumborize-beta>=1.1.7', + 'django-thumborize-beta>=2.0.0+build.1848', + 'django-thumborize-beta>=2.0.1-alpha.1227', + 'django-thumborize-beta>=1.0.0-alpha+beta', + 'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12+788', + 'django-thumborize-beta>=1.2.3----R-S.12.9.1--.12+meta', + 'django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12', + 'django-thumborize-beta>=1.0.0+0.build.1-rc.10000aaa-kk-0.1', + 'django-thumborize-beta>=999999999999999999.99999999999999.9999999999999', # noqa + 'Proj1', + 'Proj2>=0.0.1', + 'Proj3', + 'Proj4>=0.0.2', + 'Proj5', + 'Proj>=0.0.3', + 'Proj', + 'Proj>=0.0.4', + 'Proj', + 'foo-bar>=1.2.4', + ] + tests = [ + 'egg=django-thumborize', + 'egg=django-thumborize-beta', + 'egg=django-thumborize2-beta', + 'egg=django-thumborize2-beta-4.0.1', + 'egg=django-thumborize2-beta-1.0.0-alpha.beta.1', + 'egg=django-thumborize2-beta-1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay', # noqa + 'egg=django-thumborize2-beta-2.0.0-rc.1+build.123', + 'egg=django-thumborize-beta-0.0.4', + 'egg=django-thumborize-beta-1.2.3', + 'egg=django-thumborize-beta-10.20.30', + 'egg=django-thumborize-beta-1.1.2-prerelease+meta', + 'egg=django-thumborize-beta-1.1.2+meta', + 'egg=django-thumborize-beta-1.1.2+meta-valid', + 'egg=django-thumborize-beta-1.0.0-alpha', + 'egg=django-thumborize-beta-1.0.0-beta', + 'egg=django-thumborize-beta-1.0.0-alpha.beta', + 'egg=django-thumborize-beta-1.0.0-alpha.beta.1', + 'egg=django-thumborize-beta-1.0.0-alpha.1', + 'egg=django-thumborize-beta-1.0.0-alpha0.valid', + 'egg=django-thumborize-beta-1.0.0-alpha.0valid', + 'egg=django-thumborize-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay', # noqa + 'egg=django-thumborize-beta-1.0.0-rc.1+build.1', + 'egg=django-thumborize-beta-2.0.0-rc.1+build.123', + 'egg=django-thumborize-beta-1.2.3-beta', + 'egg=django-thumborize-beta-10.2.3-DEV-SNAPSHOT', + 'egg=django-thumborize-beta-1.2.3-SNAPSHOT-123', + 'egg=django-thumborize-beta-1.0.0', + 'egg=django-thumborize-beta-2.0.0', + 'egg=django-thumborize-beta-1.1.7', + 'egg=django-thumborize-beta-2.0.0+build.1848', + 'egg=django-thumborize-beta-2.0.1-alpha.1227', + 'egg=django-thumborize-beta-1.0.0-alpha+beta', + 'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12+788', # noqa + 'egg=django-thumborize-beta-1.2.3----R-S.12.9.1--.12+meta', + 'egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12', + 'egg=django-thumborize-beta-1.0.0+0.build.1-rc.10000aaa-kk-0.1', # noqa + 'egg=django-thumborize-beta-999999999999999999.99999999999999.9999999999999', # noqa + 'egg=Proj1', + 'egg=Proj2-0.0.1', + 'egg=Proj3', + 'egg=Proj4-0.0.2', + 'egg=Proj5', + 'egg=Proj-0.0.3', + 'egg=Proj', + 'egg=Proj-0.0.4', + 'egg=Proj', + 'egg=foo-bar-1.2.4', + ] + for index, test in enumerate(tests): + self.assertEqual(expected[index], + re.sub(r'egg=([^&]+).*$', + packaging.egg_fragment, + test)) def test_parse_repo_url_requirements(self): result = packaging.parse_requirements([self.requirements]) diff --git a/pbr/tests/test_setup.py b/pbr/tests/test_setup.py index 0e60df7..d171d7c 100644 --- a/pbr/tests/test_setup.py +++ b/pbr/tests/test_setup.py @@ -93,8 +93,9 @@ class SkipFileWrites(base.BaseTestCase): option_dict=self.option_dict) self.assertEqual( not os.path.exists(self.filename), - (self.option_value.lower() in options.TRUE_VALUES - or self.env_value is not None)) + (self.option_value.lower() in options.TRUE_VALUES or + self.env_value is not None)) + _changelog_content = """7780758\x00Break parser\x00 (tag: refs/tags/1_foo.1) 04316fe\x00Make python\x00 (refs/heads/review/monty_taylor/27519) @@ -125,6 +126,7 @@ def _make_old_git_changelog_format(line): refname = refname.replace('tag: ', '') return '\x00'.join((sha, msg, refname)) + _old_git_changelog_content = '\n'.join( _make_old_git_changelog_format(line) for line in _changelog_content.split('\n')) diff --git a/pbr/tests/testpackage/doc/source/conf.py b/pbr/tests/testpackage/doc/source/conf.py index 7358510..6edbe8e 100644 --- a/pbr/tests/testpackage/doc/source/conf.py +++ b/pbr/tests/testpackage/doc/source/conf.py @@ -12,17 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os -import sys -sys.path.insert(0, os.path.abspath('../..')) # -- General configuration ---------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.autodoc', - #'sphinx.ext.intersphinx', ] # autodoc generation is a bit aggressive and a nuisance when doing heavy @@ -49,16 +45,8 @@ add_module_names = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' -# -- Options for HTML output -------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. Major themes that come with -# Sphinx are currently 'default' and 'sphinxdoc'. -# html_theme_path = ["."] -# html_theme = '_theme' -# html_static_path = ['static'] -# Output file base name for HTML help builder. -htmlhelp_basename = '%sdoc' % project +# -- Options for HTML output -------------------------------------------------- # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass @@ -69,6 +57,3 @@ latex_documents = [ u'%s Documentation' % project, u'OpenStack Foundation', 'manual'), ] - -# Example configuration for intersphinx: refer to the Python standard library. -#intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/pbr/tests/util.py b/pbr/tests/util.py index 0e7bcf1..8a00c84 100644 --- a/pbr/tests/util.py +++ b/pbr/tests/util.py @@ -53,9 +53,9 @@ except ImportError: @contextlib.contextmanager def open_config(filename): if sys.version_info >= (3, 2): - cfg = configparser.ConfigParser() + cfg = configparser.ConfigParser() else: - cfg = configparser.SafeConfigParser() + cfg = configparser.SafeConfigParser() cfg.read(filename) yield cfg with open(filename, 'w') as fp: diff --git a/pbr/util.py b/pbr/util.py index 6b2e87d..1e9fdc4 100644 --- a/pbr/util.py +++ b/pbr/util.py @@ -219,10 +219,11 @@ def cfg_to_args(path='setup.cfg', script_args=()): """ # The method source code really starts here. - if sys.version_info >= (3, 2): - parser = configparser.ConfigParser() + if sys.version_info >= (3, 0): + parser = configparser.ConfigParser() else: - parser = configparser.SafeConfigParser() + parser = configparser.SafeConfigParser() + if not os.path.exists(path): raise errors.DistutilsFileError("file '%s' does not exist" % os.path.abspath(path)) diff --git a/pbr/version.py b/pbr/version.py index 5eb217a..46c6020 100644 --- a/pbr/version.py +++ b/pbr/version.py @@ -323,8 +323,8 @@ class SemanticVersion(object): version number of the component to preserve sorting. (Used for rpm support) """ - if ((self._prerelease_type or self._dev_count) - and pre_separator is None): + if ((self._prerelease_type or self._dev_count) and + pre_separator is None): segments = [self.decrement().brief_string()] pre_separator = "." else: diff --git a/test-requirements.txt b/test-requirements.txt index c30a2b1..09efec0 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,9 +1,10 @@ # The order of packages is significant, because pip processes them in the order # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. + wheel>=0.32.0 # MIT fixtures>=3.0.0 # Apache-2.0/BSD -hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 +hacking>=1.1.0,<1.2.0 # Apache-2.0 mock>=2.0.0 # BSD six>=1.10.0 # MIT stestr>=2.1.0 # Apache-2.0 @@ -48,10 +48,8 @@ commands = coverage xml -o cover/coverage.xml [flake8] -# H405 multi line docstring summary not separated with an empty line -# H904 "Wrap lines in parentheses and not a backslash for line continuation -# Removed in current hacking (https://review.openstack.org/#/c/101701/). -ignore = H803,H904 +# W504 (you have to choose this or W503) +ignore = W504 exclude = .venv,.tox,dist,doc,*.egg,build show-source = true |