Files
zulip/tools/test-help-documentation
Anders Kaseorg 2bf20e02f2 documentation_crawler: Remove wrongly inverted skip_check_fragment flag.
Due to a missing `not`, this incorrectly skipped checking fragments
for everything *other* than the /help documentation!

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-09-03 16:21:23 -07:00

102 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import contextlib
import os
import subprocess
import sys
from collections.abc import Iterator
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.chdir(ZULIP_PATH)
sys.path.insert(0, ZULIP_PATH)
# check for the venv
from tools.lib import sanity_check
sanity_check.check_venv(__file__)
from tools.lib.test_script import add_provision_check_override_param
from tools.lib.test_server import test_server_running
parser = argparse.ArgumentParser()
add_provision_check_override_param(parser)
parser.add_argument(
"--skip-external-links",
dest="skip_external_link_check",
action="store_true",
help="Skip checking of external links.",
)
parser.add_argument(
"--help-center",
dest="enable_help_center",
action="store_true",
help="Test help center generated as part of the astro build process. If this option is set to True, this script assumes that you already have performend the build step.",
)
options = parser.parse_args()
os.makedirs("var/help-documentation", exist_ok=True)
LOG_FILE = "var/help-documentation/server.log"
external_host = "localhost:9981"
extra_args = []
if options.skip_external_link_check:
extra_args += ["-a", "skip_external=set"]
@contextlib.contextmanager
def vnu_servlet() -> Iterator[None]:
with subprocess.Popen(
[
"java",
"-cp",
os.path.join(
os.path.dirname(__file__),
"../node_modules/vnu-jar/build/dist/vnu.jar",
),
"-Dnu.validator.servlet.bind-address=127.0.0.1",
"nu.validator.servlet.Main",
"9988",
]
) as proc:
yield
proc.terminate()
with (
vnu_servlet(),
test_server_running(
options.skip_provision_check,
external_host,
log_file=LOG_FILE,
dots=True,
enable_help_center=options.enable_help_center,
),
):
ret_help_doc = subprocess.call(
["scrapy", "crawl_with_status", *extra_args, "help_documentation_crawler"],
cwd="tools/documentation_crawler",
)
extra_args += ["-a", "validate_html=set"]
ret_api_doc = subprocess.call(
["scrapy", "crawl_with_status", *extra_args, "api_documentation_crawler"],
cwd="tools/documentation_crawler",
)
ret_portico_doc = subprocess.call(
["scrapy", "crawl_with_status", *extra_args, "portico_documentation_crawler"],
cwd="tools/documentation_crawler",
)
if ret_help_doc != 0 or ret_api_doc != 0 or ret_portico_doc != 0:
print("\033[0;91m")
print("Failed")
print("\033[0m")
else:
print("\033[0;92m")
print("Passed!")
print("\033[0m")
sys.exit(ret_help_doc or ret_api_doc or ret_portico_doc)