add integration test for webui

This commit is contained in:
Jörg Thalheim 2023-08-24 12:33:55 +02:00
parent 55ed397d21
commit 13a6386004
2 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,10 @@
import argparse
from . import register_parser
if __name__ == "__main__":
# this is use in our integration test
parser = argparse.ArgumentParser()
register_parser(parser)
args = parser.parse_args()
args.func(args)

View File

@ -0,0 +1,38 @@
import os
import select
import shutil
import subprocess
import sys
from pathlib import Path
from ports import Ports
def test_start_server(ports: Ports, temporary_dir: Path) -> None:
port = ports.allocate(1)
fifo = temporary_dir / "fifo"
os.mkfifo(fifo)
notify_script = temporary_dir / "notify.sh"
bash = shutil.which("bash")
assert bash is not None
notify_script.write_text(
f"""#!{bash}
set -x
echo "1" > {fifo}
"""
)
notify_script.chmod(0o700)
env = os.environ.copy()
env["BROWSER"] = str(notify_script)
with subprocess.Popen(
[sys.executable, "-m", "clan_cli.webui", "--port", str(port)], env=env
) as p:
try:
with open(fifo) as f:
r, _, _ = select.select([f], [], [], 10)
assert f in r
assert f.read().strip() == "1"
finally:
p.kill()