mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add docs-build sanity test.
This commit is contained in:
parent
14cdf3b03c
commit
26fa3adeab
3 changed files with 63 additions and 0 deletions
4
docs/docsite/rst/dev_guide/testing/sanity/docs-build.rst
Normal file
4
docs/docsite/rst/dev_guide/testing/sanity/docs-build.rst
Normal file
|
@ -0,0 +1,4 @@
|
|||
Sanity Tests » docs-build
|
||||
=========================
|
||||
|
||||
Verifies that ``make singlehtmldocs`` in ``docs/docsite/`` completes without errors.
|
4
test/sanity/code-smell/docs-build.json
Normal file
4
test/sanity/code-smell/docs-build.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"always": true,
|
||||
"output": "path-line-column-message"
|
||||
}
|
55
test/sanity/code-smell/docs-build.py
Executable file
55
test/sanity/code-smell/docs-build.py
Executable file
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
def main():
|
||||
base_dir = os.getcwd() + os.sep
|
||||
docs_dir = os.path.abspath('docs/docsite')
|
||||
cmd = ['make', 'singlehtmldocs']
|
||||
|
||||
sphinx = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=docs_dir)
|
||||
stdout, stderr = sphinx.communicate()
|
||||
|
||||
if sphinx.returncode != 0:
|
||||
raise subprocess.CalledProcessError(sphinx.returncode, cmd, output=stdout, stderr=stderr)
|
||||
|
||||
with open('docs/docsite/rst_warnings', 'r') as warnings_fd:
|
||||
output = warnings_fd.read().strip()
|
||||
lines = output.splitlines()
|
||||
|
||||
for line in lines:
|
||||
match = re.search('^(?P<path>[^:]+):((?P<line>[0-9]+):)?((?P<column>[0-9]+):)? (?P<level>WARNING|ERROR): (?P<message>.*)$', line)
|
||||
|
||||
if not match:
|
||||
path = 'docs/docsite/rst/index.rst'
|
||||
lineno = 0
|
||||
column = 0
|
||||
level = 'unknown'
|
||||
message = line
|
||||
|
||||
# surface unknown lines while filtering out known lines to avoid excessive output
|
||||
print('%s:%d:%d: %s: %s' % (path, lineno, column, level, message))
|
||||
continue
|
||||
|
||||
path = match.group('path')
|
||||
lineno = int(match.group('line') or 0)
|
||||
column = int(match.group('column') or 0)
|
||||
level = match.group('level').lower()
|
||||
message = match.group('message')
|
||||
|
||||
path = os.path.abspath(path)
|
||||
|
||||
if path.startswith(base_dir):
|
||||
path = path[len(base_dir):]
|
||||
|
||||
if level == 'warning':
|
||||
continue
|
||||
|
||||
print('%s:%d:%d: %s: %s' % (path, lineno, column, level, message))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in a new issue