[stable-2.6] 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..
(cherry picked from commit 90a38670be
)
Co-authored-by: Matt Clay <matt@mystile.com>
This commit is contained in:
parent
7ee89d4ac6
commit
b4aa70e0a1
1 changed files with 17 additions and 3 deletions
|
@ -24,6 +24,8 @@ try:
|
|||
except ImportError:
|
||||
argcomplete = None
|
||||
|
||||
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')
|
||||
CONFIG_PATH = os.path.join(CHANGELOG_DIR, 'config.yaml')
|
||||
|
@ -298,14 +300,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]
|
||||
|
||||
|
|
Loading…
Reference in a new issue