blob: b4575c6e9b2b33ea2c34e3bcbdad6955deb2edc3 [file] [edit]
# -*- coding: utf-8 -*-
"""Command-line entrypoint to utils/docs
Use this as e.g. `python utils/docs --test` to run all docs smoke tests.
"""
import argparse
import subprocess
import sys
from pathlib import Path
from typing import List
from llvm_sphinx.ext import absolute_links, ghlinks
TEST_COMPONENTS = {
"absolute-links": absolute_links.run_tests,
"ghlinks": ghlinks.run_tests,
}
def main(argv: List[str]) -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
"--test",
choices=TEST_COMPONENTS,
metavar="COMPONENT",
nargs="*",
help="run selected Sphinx smoke tests (default: all components)",
)
args = parser.parse_args(argv)
if args.test is None:
parser.print_help(sys.stderr)
return 0
test_components = args.test or tuple(TEST_COMPONENTS)
if len(test_components) > 1:
script = Path(__file__).resolve()
for component in test_components:
subprocess.run(
[sys.executable, str(script), "--test", component],
check=True,
stdout=subprocess.DEVNULL,
)
else:
TEST_COMPONENTS[test_components[0]]()
print("llvm_sphinx: tests passed; next, rebuild the affected project docs")
return 0
if __name__ == "__main__":
raise SystemExit(main(sys.argv[1:]))