diff options
author | Matt Clay <matt@mystile.com> | 2019-03-14 19:18:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-14 19:18:14 +0100 |
commit | 90a38670be6a09dd51d2a44a253d681513e7ab95 (patch) | |
tree | 9a3edd2c52d3e118dcd93efadaff9b43f9eac60c /packaging | |
parent | junos_user add condition when user = root (#53111) (diff) | |
download | ansible-90a38670be6a09dd51d2a44a253d681513e7ab95.tar.xz ansible-90a38670be6a09dd51d2a44a253d681513e7ab95.zip |
Changelog lint and generation bug fixes. (#53792)
* Add missing dict entry for changelog generation.
* Enforce str and list types on sections.
* Check type of section list items.
* Support non-ascii characters in changelogs.
Diffstat (limited to 'packaging')
-rwxr-xr-x | packaging/release/changelogs/changelog.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/packaging/release/changelogs/changelog.py b/packaging/release/changelogs/changelog.py index dcaedbb7b1..974324d58e 100755 --- a/packaging/release/changelogs/changelog.py +++ b/packaging/release/changelogs/changelog.py @@ -25,6 +25,7 @@ except ImportError: argcomplete = None from ansible import constants as C +from ansible.module_utils.six import string_types BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')) CHANGELOG_DIR = os.path.join(BASE_DIR, 'changelogs') @@ -175,6 +176,8 @@ def load_plugins(version, force_reload): LOGGER.info('refreshing plugin cache') plugins_data['version'] = version + plugins_data['plugins'] = {} + for plugin_type in C.DOCUMENTABLE_PLUGINS: plugins_data['plugins'][plugin_type] = json.loads(subprocess.check_output([os.path.join(BASE_DIR, 'bin', 'ansible-doc'), '--json', '-t', plugin_type])) @@ -302,14 +305,26 @@ class ChangelogFragmentLinter(object): errors = [] for section, lines in fragment.content.items(): - if section not in self.config.sections: - errors.append((fragment.path, 0, 0, 'invalid section: %s' % section)) + if section == self.config.prelude_name: + if not isinstance(lines, string_types): + errors.append((fragment.path, 0, 0, 'section "%s" must be type str not %s' % (section, type(lines).__name__))) + else: + # doesn't account for prelude but only the RM should be adding those + if not isinstance(lines, list): + errors.append((fragment.path, 0, 0, 'section "%s" must be type list not %s' % (section, type(lines).__name__))) + + if section not in self.config.sections: + errors.append((fragment.path, 0, 0, 'invalid section: %s' % section)) if isinstance(lines, list): for line in lines: + if not isinstance(line, string_types): + errors.append((fragment.path, 0, 0, 'section "%s" list items must be type str not %s' % (section, type(line).__name__))) + continue + results = rstcheck.check(line, filename=fragment.path, report_level=docutils.utils.Reporter.WARNING_LEVEL) errors += [(fragment.path, 0, 0, result[1]) for result in results] - else: + elif isinstance(lines, string_types): results = rstcheck.check(lines, filename=fragment.path, report_level=docutils.utils.Reporter.WARNING_LEVEL) errors += [(fragment.path, 0, 0, result[1]) for result in results] |